unit umain; interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ieview, imageenview, ExtCtrls, ieopensavedlg, Menus, ComCtrls, Buttons, iemview, AppEvnts, hyieutils, iexBitmaps, hyiedefs, iesettings, iexLayers, iexRulers; type TForm1 = class(TForm) Panel1: TPanel; Label1: TLabel; Panel2: TPanel; ImageEnView1: TImageEnView; Label2: TLabel; TrackBar1: TTrackBar; Panel3: TPanel; GroupBox1: TGroupBox; Label3: TLabel; Label5: TLabel; Label8: TLabel; ComboBox1: TComboBox; ListBox1: TListBox; ComboBox2: TComboBox; Edit4: TEdit; SpeedButton1: TSpeedButton; Button1: TButton; ImageEnMView1: TImageEnMView; Label9: TLabel; Edit3: TEdit; UpDown1: TUpDown; Label10: TLabel; Label4: TLabel; Edit1: TEdit; procedure TrackBar1Change(Sender: TObject); procedure FormActivate(Sender: TObject); procedure SpeedButton1Click(Sender: TObject); procedure ComboBox2Change(Sender: TObject); procedure ComboBox1Change(Sender: TObject); procedure Button1Click(Sender: TObject); procedure ImageEnMView1ImageSelect(Sender: TObject; idx: Integer); procedure Edit3Change(Sender: TObject); private { Private declarations } public { Public declarations } procedure ShowVideoFormats; end; var Form1: TForm1; implementation uses imageenio; {$R *.DFM} {$R WindowsTheme.res} // Zoom procedure TForm1.TrackBar1Change(Sender: TObject); begin ImageEnView1.Zoom:=TrackBar1.Position; Label2.Caption:='Zoom ('+FloatToStr(ImageEnView1.Zoom)+'%)'; end; procedure TForm1.FormActivate(Sender: TObject); begin // Fill video source combobox ComboBox1.Items.Assign(ImageEnView1.IO.DShowParams.VideoInputs); // Select first item ComboBox1.ItemIndex := 0; ShowVideoFormats; end; // Show Video button procedure TForm1.SpeedButton1Click(Sender: TObject); var w,h:integer; begin with ImageEnView1.IO.DShowParams do if SpeedButton1.Down then begin // connect video input if (not Connected) then begin // set video source as index of IO.DShowParams.VideoInputs w := VideoFormats[ ListBox1.ItemIndex ].MaxWidth; h := VideoFormats[ ListBox1.ItemIndex ].MaxHeight; SetVideoInput(ComboBox1.ItemIndex, StrToIntDef(edit4.Text,0), w, h); // set the second parameter if you have more than one camera with same name // enable video and audio rendering RenderAudio:=true; RenderVideo:=true; // set output file if Edit1.Text<>'' then FileOutput:=Edit1.Text; // connect to the video input Connect; //savegraph('c:\1.grf'); // for debug // Set bitmap size GetVideoRenderNativeSize(w,h); ImageEnView1.Proc.ImageResize(w,h); end; // start capture Run; end else begin Disconnect; ImageEnView1.Update; end; end; procedure TForm1.ShowVideoFormats; var i: integer; s: string; begin with ImageEnView1.IO.DShowParams do begin SetVideoInput(ComboBox1.ItemIndex, StrToIntDef(edit4.Text,0)); Connect; // fills video formats list box ListBox1.Clear; for i := 0 to VideoFormatsCount - 1 do begin with VideoFormats[i] do s := Format + ' ' + inttostr(MaxWidth) + 'x' + inttostr(MaxHeight); ListBox1.Items.Add(s); end; ListBox1.ItemIndex:=0; // fills video source inputs ComboBox2.Items.Assign(VideoInputSources); // set current video source input ComboBox2.ItemIndex := VideoInputSource; Disconnect; end; end; // Set video source input procedure TForm1.ComboBox2Change(Sender: TObject); begin ImageEnView1.IO.DShowParams.VideoInputSource := ComboBox2.ItemIndex; end; // Changes video source procedure TForm1.ComboBox1Change(Sender: TObject); begin ShowVideoFormats; end; // Get sample procedure TForm1.Button1Click(Sender: TObject); begin with ImageEnView1.IO.DShowParams do begin GetSample( ImageEnView1.IEBitmap ); ImageEnView1.Update; ImageEnMView1.SetIEBitmap( ImageEnMView1.AppendImage, ImageEnView1.IEBitmap ); end; end; // Select image on thumbnails view procedure TForm1.ImageEnMView1ImageSelect(Sender: TObject; idx: Integer); begin ImageEnMView1.CopyToIEBitmap( idx, ImageEnView1.IEBitmap ); ImageEnView1.Update; end; // change tuner channel procedure TForm1.Edit3Change(Sender: TObject); begin ImageEnView1.IO.DShowParams.TunerChannel := strtointdef(edit3.text, 0); if ImageEnView1.IO.DShowParams.TunerFindSignal then begin label10.Caption := 'Signal'; label10.Font.color := clGreen; end else begin label10.Caption := 'No Signal'; label10.Font.color := clRed; end; end; end.