Newsgroup: it.comp.lang.delphi
Titolo: Passaggio da un form all'altro

Salve ragazzi ho un problemino:
ho creato un'applicazione che cattura immagini da web e salva il tutto
su un file .avi. L'applicazione è costituita da due form, il seocndo
form è quello fondamentale, a seconda di come viene attivato puo
direttamente catturare immagini da webcam oppure settare i paramentri
della web e poi catturare immagini.
In particolare se viene premuto il tasto shift si cattura direttamente
le immagini con dei filtri che imposto di default, altrimenti se si
preme un tasto il secondo form si apre ma setta i parametri,sempre in
termini di filtro audio e video,della webcam.
Premendo il tasto ok mi si chiude il form e torno sul primo form,
solamente che ripremendo il tasto shift nn mi si avvia piu la cattura
delle immagini ma mi si apre sempre il secondo form mostrandomi pero la
configurazione della web.
Vi mostro alcune righe(S.O. xp, delphi7 e DSPack):
nel primo form
procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
if Key = VK_SHIFT then
Mainform.showmodal;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
MainForm.VideoWindow.Visible:= False;
MainForm.StatusBar.Visible:= false;
MainForm.ComboBox1.Visible:= true;
MainForm.ComboBox2.Visible:= true;
MainForm.ListBox1.Visible:= true;
MainForm.ListBox2.Visible:= true;
MainForm.Caption:='WebCam Setting';
MainForm.ShowModal;
end;
nel secondo form vi metto le procedure rilevanti
procedure TMainForm.VideoWindowKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
var
multiplexer: IBaseFilter;
Writer: IFileSinkFilter;
PinList: TPinList;
begin
 if key = VK_SHIFT then
 begin
 // Activate the filter graph
  CaptureGraph.Active := true;
   Caption:='WebCam';
      // now render streams
  with CaptureGraph as IcaptureGraphBuilder2 do
  begin
    // set the output filename
    SetOutputFileName(MEDIASUBTYPE_Avi, PWideChar(CapFile),
multiplexer, Writer);
    // Connect Video preview (VideoWindow)
    if VideoSourceFilter.BaseFilter.DataLength > 0 then
      RenderStream(@PIN_CATEGORY_PREVIEW, nil, VideoSourceFilter as
IBaseFilter,
        nil , VideoWindow as IBaseFilter);
    // Connect Video capture streams
    if VideoSourceFilter.FilterGraph <> nil then
      RenderStream(@PIN_CATEGORY_CAPTURE, nil, VideoSourceFilter as
IBaseFilter,
        nil, multiplexer as IBaseFilter);
    // Connect Audio capture streams
    if AudioSourceFilter.FilterGraph <> nil then
    begin
      RenderStream(nil, nil, AudioSourceFilter as IBaseFilter,
        nil, multiplexer as IBaseFilter);
    end;
  end;
  CaptureGraph.Play;
  Timer.Enabled := true;
end;
end;
// Stop Capture
procedure TMainForm.VideoWindowKeyUp(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  if Key = VK_SHIFT then
  begin
  Timer.Enabled := false;
  CaptureGraph.Stop;
  CaptureGraph.Active := False;
  Close;
   end;
end;
procedure TMainForm.Button1Click(Sender: TObject);
var
PinList: TPinList;
multiplexer: IBaseFilter;
Writer: IFileSinkFilter;
begin
ListBox1.Visible:=False;
ListBox2.Visible:=False;
ComboBox1.Visible:=False;
ComboBox2.Visible:=False;
StatusBar.Visible:= True;
VideoWindow.Visible:= true;
CaptureGraph.Active := true;
// configure output Video media type
  if VideoSourceFilter.FilterGraph <> nil then
  begin
    PinList := TPinList.Create(VideoSourceFilter as IBaseFilter);
    if ListBox1.ItemIndex <> -1 then
      with (PinList.First as IAMStreamConfig) do
SetFormat(VideoMediaTypes.Items[ListBox1.ItemIndex].AMMediaType^);
    PinList.Free;
  end;
Close;
 end;
Qualcuno sa dirmi qualcosa?
Grazie
P.S. Ho provato anche a fare un form a parte per il settaggio della
webcam ma nn prendeva sempre il nuovo settaggio quando chiudevo il
terzo form( quello relativo al setting) e ritornavo su quello
principale, infatti alla pressione del tasto shift la web si attivava
ma sempre con i parametri iniziali e non con quelli cambiati.

Tanto per iniziare hai verificato che passi dalle routines?
metti un breakpoint (F5) allinizio delle due buttononclick ( a
proposito, dai sempre nomi significativi ai tuoi oggetti... button1 non
dice nulla...)
Dato che visualizzi la form di Cattura/Setup con uno showmodal, prova a
spostare il codice di "ripristino" dopo lo showmodal, anziche
nell'click del bottone.
ciao
S

ho provato a spostare il codice come mi hai consigliato ma con nessun
esito positivo!!
E un mese che ci sto combattendo, forse sarà colpa della mia
inesperienza! mah!!
Cmq se hai qualche altro suggerimento di pure!
Ciao
Grazie
Francesco