unit umain; interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ieview, imageenview, iewia, imageenio, ComCtrls, ExtCtrls, Menus, hyieutils, iexBitmaps, hyiedefs, iesettings, iexLayers, iexRulers; type TMainForm = class(TForm) ImageEnView1: TImageEnView; Panel1: TPanel; ProgressBar1: TProgressBar; TreeView1: TTreeView; MainMenu1: TMainMenu; File1: TMenuItem; Save1: TMenuItem; N1: TMenuItem; Print1: TMenuItem; N2: TMenuItem; Exit1: TMenuItem; SelectCamera1: TMenuItem; Label1: TLabel; Label2: TLabel; Panel2: TPanel; lblMake: TLabel; Label4: TLabel; lblModel: TLabel; Label6: TLabel; lblDate: TLabel; Label8: TLabel; lblSize: TLabel; Label10: TLabel; chkSaveToDisk: TCheckBox; chkLoadImage: TCheckBox; Label11: TLabel; ImageEnView2: TImageEnView; Button1: TButton; Splitter1: TSplitter; procedure TreeView1Change(Sender: TObject; Node: TTreeNode); procedure FormActivate(Sender: TObject); procedure ImageEnView1Progress(Sender: TObject; per: Integer); procedure Exit1Click(Sender: TObject); procedure Save1Click(Sender: TObject); procedure Print1Click(Sender: TObject); procedure SelectCamera1Click(Sender: TObject); procedure Button1Click(Sender: TObject); private { Private declarations } public { Public declarations } procedure FillFileNames; end; var MainForm: TMainForm; implementation {$R *.DFM} {$R WindowsTheme.res} uses iexAcquire; // fill tree view procedure TMainForm.FillFileNames; begin TreeView1.Items.Clear; ImageEnView1.IO.WIAParams.FillTreeView(TreeView1.Items, false); TreeView1.FullExpand; end; // try to fill file names at startup procedure TMainForm.FormActivate(Sender: TObject); begin FillFileNames; end; // Selected a file, load it procedure TMainForm.TreeView1Change(Sender: TObject; Node: TTreeNode); begin // Get the image from the camera and save it without loading the jpeg. This means the image won't lose quality. // Warning: here we assume your camera store images using JPEG file format! if chkSaveToDisk.Checked then begin ImageEnView1.IO.WIAParams.TransferFormat := ietfJpeg; ImageEnView1.IO.WiAParams.SaveTransferBufferAs := Node.Text + '.jpg'; end else ImageEnView1.IO.WiAParams.SaveTransferBufferAs := ''; ImageEnView1.IO.WiaParams.GetItemThumbnail( TIEWiaItem(Node.Data), ImageEnView2.IEBitmap ); ImageEnView2.Update; if chkLoadImage.Checked then begin // Get Image ImageEnView1.IO.WIAParams.ProcessingBitmap := ImageEnView1.IEBitmap; ImageEnView1.IO.WIAParams.TransferFormat := ietfJpeg; ImageEnView1.IO.WIAParams.Transfer( TIEWiaItem(Node.Data) , false); ImageEnView1.Update; // fill EXIF samples frame with ImageEnView1.IO.Params do begin lblMake .Caption := EXIF_Make; lblModel.Caption := EXIF_Model; lblDate .Caption := EXIF_DateTime; lblSize .Caption := IntToStr(EXIF_ExifImageWidth)+' x '+IntToStr(EXIF_ExifImageHeight); end; end; end; // update progress bar procedure TMainForm.ImageEnView1Progress(Sender: TObject; per: Integer); begin ProgressBar1.Position:=per; end; // File | Close procedure TMainForm.Exit1Click(Sender: TObject); begin Close; end; // File | Save procedure TMainForm.Save1Click(Sender: TObject); begin with ImageEnView1.IO do ImageEnView1.IO.SaveToFile( ExecuteSaveDialog('','',false,0,'') ); end; // File | Print procedure TMainForm.Print1Click(Sender: TObject); begin ImageEnView1.IO.DoPrintPreviewDialog(iedtDialog,'',false,''); end; // Select camera (WIA source) procedure TMainForm.SelectCamera1Click(Sender: TObject); begin TreeView1.Items.Clear; ImageEnView1.IO.SelectAcquireSource([ieaWIA]); FillFileNames; end; // Delete selected image (item) procedure TMainForm.Button1Click(Sender: TObject); begin ImageEnView1.IO.WiaParams.DeleteItem( TIEWiaItem(TreeView1.Selected.Data) ); FillFileNames; end; end.