Hi
Shows nothing in ImageEnView1.Maybe I made a mistake somewhere. I pray for the correction.
----------------------------------------------------------------------------------
unit umain;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, imageenview, ieview, iemview, XPMan, Buttons, ExtCtrls,
ComCtrls, ieds;
type
TMainForm = class(TForm)
XPManifest1: TXPManifest;
Panel1: TPanel;
ButtonAddInput: TBitBtn;
StatusBar1: TStatusBar;
Panel3: TPanel;
Panel4: TPanel;
ImageEnMView1: TImageEnMView;
Panel5: TPanel;
Splitter1: TSplitter;
ImageEnView1: TImageEnView;
Panel2: TPanel;
Panel6: TPanel;
procedure ButtonAddInputClick(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure FormDestroy(Sender: TObject);
procedure ImageEnMView1Click(Sender: TObject);
private
{ Private declarations }
FImageEnViews: TList;
public
{ Public declarations }
procedure NewFrame(Sender: TObject);
end;
var
MainForm: TMainForm;
ie: TImageEnView;
implementation
uses uselectinput;
{$R *.dfm}
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
iVideoInput: Integer;
iVideoSource: Integer;
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);
iVideoInput := FormSelectInput.ComboBoxVideoInput.ItemIndex;
iVideoSource := StrToIntDef(FormSelectInput.EditVideoSource.Text, 0);
ie.IO.DShowParams.SetVideoInput(iVideoInput, iVideoSource);
ie.IO.DShowParams.EnableSampleGrabber := true;
ie.IO.DShowParams.Connect;
ie.IO.DShowParams.Run;
ie.Tag := ImageEnMView1.AppendImage(100, 100);
ImageEnMView1.ImageTag[ie.Tag] := 1000 * iVideoInput + iVideoSource;
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;
procedure TMainForm.ImageEnMView1Click(Sender: TObject);
var
iVideoInput: Integer;
iVideoSource: Integer;
iSelected: Integer;
begin
iSelected := ImageEnMView1.SelectedImage;
if iSelected < 0 then
begin
ImageEnView1.IO.DShowParams.Stop;
ImageEnView1.Blank;
end
else
begin
iVideoInput := ImageEnMView1.ImageTag[iSelected] div 1000;
iVideoSource := ImageEnMView1.ImageTag[iSelected] mod 1000;
ie.IO.DShowParams.SetVideoInput(iVideoInput, iVideoSource);
ImageEnView1.IO.DShowParams.EnableSampleGrabber := true;
ImageEnView1.IO.DShowParams.Connect;
ImageEnView1.IO.DShowParams.Run;
end;
end;
end.