unit umain; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, imageenview, ieview, iemview; type TMainForm = class(TForm) ButtonAddInput: TButton; ImageEnMView1: TImageEnMView; procedure ButtonAddInputClick(Sender: TObject); procedure FormCreate(Sender: TObject); procedure FormDestroy(Sender: TObject); private { Private declarations } FImageEnViews: TList; public { Public declarations } procedure NewFrame(Sender: TObject); end; var MainForm: TMainForm; implementation uses uselectinput; {$R *.dfm} {$R WindowsTheme.res} procedure TMainForm.NewFrame(Sender: TObject); var ie: TImageEnView; idx: integer; begin ie := Sender as TImageEnView; idx := ie.Tag; ie.IO.DShowParams.GetSample(ImageEnMView1.GetTIEBitmap(idx)); ImageEnMView1.ReleaseBitmap(idx); ImageEnMView1.UpdateImage(idx); end; procedure TMainForm.ButtonAddInputClick(Sender: TObject); var ie: TImageEnView; begin ie := TImageEnView.Create(self); ie.Parent := self; ie.Visible := false; ie.OnDShowNewFrame := NewFrame; FormSelectInput.ie := ie; if FormSelectInput.ShowModal = mrOK then begin FImageEnViews.Add(ie); ie.IO.DShowParams.SetVideoInput(FormSelectInput.ComboBoxVideoInput.ItemIndex, StrToIntDef(FormSelectInput.EditVideoSource.Text, 0)); ie.IO.DShowParams.EnableSampleGrabber := true; ie.IO.DShowParams.Connect; ie.IO.DShowParams.Run; ie.Tag := ImageEnMView1.AppendImage(100, 100); end else ie.Free(); end; procedure TMainForm.FormCreate(Sender: TObject); begin FImageEnViews := TList.Create(); end; procedure TMainForm.FormDestroy(Sender: TObject); var i: integer; begin for i := 0 to FImageEnViews.Count - 1 do (TObject(FImageEnViews[i]) as TImageEnView).Free(); end; end.