unit Unit1; interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls, ImageEnView, ImageEnIO, ComCtrls, ieview, hyieutils, iexBitmaps, hyiedefs, iesettings, iexLayers, iexRulers; type TForm1 = class(TForm) ImageEnView1: TImageEnView; Panel1: TPanel; GroupBox1: TGroupBox; CheckBox1: TCheckBox; GroupBox2: TGroupBox; ComboBox1: TComboBox; Label1: TLabel; Edit1: TEdit; Label2: TLabel; Edit2: TEdit; Label3: TLabel; ComboBox2: TComboBox; CheckBox2: TCheckBox; GroupBox3: TGroupBox; Label4: TLabel; Label5: TLabel; Label6: TLabel; Label7: TLabel; Edit3: TEdit; Edit4: TEdit; Edit5: TEdit; Edit6: TEdit; Button1: TButton; Button2: TButton; ProgressBar1: TProgressBar; CheckBox3: TCheckBox; CheckBox4: TCheckBox; CheckBox5: TCheckBox; Label8: TLabel; ComboBox3: TComboBox; procedure FormActivate(Sender: TObject); procedure ComboBox1Change(Sender: TObject); procedure Button2Click(Sender: TObject); procedure Button1Click(Sender: TObject); procedure ImageEnIO1Progress(Sender: TObject; per: Integer); procedure CheckBox5Click(Sender: TObject); procedure GroupBox1DblClick(Sender: TObject); procedure ComboBox2Change(Sender: TObject); procedure ComboBox3Change(Sender: TObject); private { Private declarations } procedure FillBack; // copy twain parameters to the controls procedure FillIn; // copy controls to twain parameters public { Public declarations } end; var Form1: TForm1; implementation {$R *.DFM} {$R WindowsTheme.res} uses iexAcquire; procedure TForm1.FormActivate(Sender: TObject); var i: integer; begin // fills Twain sources for i := 0 to ImageEnView1.IO.TwainParams.SourceCount - 1 do ComboBox1.Items.Add(ImageEnView1.IO.TwainParams.SourceName[i]); // Select first scanner if ComboBox1.Items.Count > 0 then begin ComboBox1.ItemIndex := 0; ImageEnView1.IO.TwainParams.SelectedSource := ComboBox1.ItemIndex; end; ImageEnView1.IO.TwainParams.AppVersionInfo := '1.0'; ImageEnView1.IO.TwainParams.AppManufacturer := 'HiComponents'; ImageEnView1.IO.TwainParams.AppProductFamily := 'Image processing'; ImageEnView1.IO.TwainParams.AppProductName := 'ImageEn demo'; FillBack; end; // Select scanner procedure TForm1.ComboBox1Change(Sender: TObject); begin ImageEnView1.IO.AcquireParams.SetSource(ieaTwain, ComboBox1.Items[ComboBox1.ItemIndex]); // OR CAN USE: ImageEnView1.IO.TwainParams.SelectedSource := ComboBox1.ItemIndex; FillBack; end; // negotiate parameters (verify that scanner supports Frame rectangle, Dpi...) procedure TForm1.Button2Click(Sender: TObject); begin FillIn; ImageEnView1.IO.TwainParams.Update; // verify here... FillBack; end; // copy twain parameters to the controls procedure TForm1.FillBack; const COLORS: array[0..9] of string = ('Black&White', 'GrayScale', 'RGB', 'Palette', 'CMY', 'CMYK', 'YUV', 'YUVK', 'CIEXYZ', 'LAB'); var i, v: integer; begin Edit1.Text := FloatToStr(ImageEnView1.IO.TwainParams.YResolution.CurrentValue); Edit2.Text := FloatToStr(ImageEnView1.IO.TwainParams.XResolution.CurrentValue); // Fill Colors (0=B/W 1=GrayScale 2=RGB) combobox ComboBox2.Clear; for i := 0 to ImageEnView1.IO.TwainParams.PixelType.Count - 1 do begin v := ImageEnView1.IO.TwainParams.PixelType[i]; if v <= high(COLORS) then ComboBox2.Items.Add(COLORS[v]); end; ComboBox2.ItemIndex := ImageEnView1.IO.TwainParams.PixelType.IndexOf(ImageEnView1.IO.TwainParams.PixelType.CurrentValue); // Fill depth combobox ComboBox3.Clear(); for i := 0 to ImageEnView1.IO.TwainParams.BitDepth.Count - 1 do begin ComboBox3.Items.Add(IntToStr( ImageenView1.IO.TwainParams.BitDepth[i] )); end; ComboBox3.ItemIndex := ImageEnView1.IO.TwainParams.BitDepth.IndexOf(ImageEnView1.IO.TwainParams.BitDepth.CurrentValue); // frame Edit3.Text := FloatToStr(ImageEnView1.IO.TwainParams.AcquireFrameLeft); Edit4.Text := FloatToStr(ImageEnView1.IO.TwainParams.AcquireFrameTop); Edit5.Text := FloatToStr(ImageEnView1.IO.TwainParams.AcquireFrameRight); Edit6.Text := FloatToStr(ImageEnView1.IO.TwainParams.AcquireFrameBottom); end; // copy controls values to twain parameters procedure TForm1.FillIn; begin ImageEnView1.IO.TwainParams.VisibleDialog := CheckBox1.Checked; ImageEnView1.IO.TwainParams.ProgressIndicators := CheckBox2.Checked; ImageEnView1.IO.TwainParams.AcquireFrameLeft := StrToFloat(Edit3.Text); ImageEnView1.IO.TwainParams.AcquireFrameTop := StrToFloat(Edit4.Text); ImageEnView1.IO.TwainParams.AcquireFrameRight := StrToFloat(Edit5.Text); ImageEnView1.IO.TwainParams.AcquireFrameBottom := StrToFloat(Edit6.Text); ImageEnView1.IO.TwainParams.PixelType.CurrentValue := ComboBox2.ItemIndex; ImageEnView1.IO.TwainParams.YResolution.CurrentValue := StrToInt(edit1.text); ImageEnView1.IO.TwainParams.XResolution.CurrentValue := StrToInt(edit2.text); ImageEnView1.IO.TwainParams.BufferedTransfer := CheckBox4.Checked; end; // Acquire procedure TForm1.Button1Click(Sender: TObject); begin FillIn; ImageEnView1.IO.Acquire; ProgressBar1.Position := 0; end; // progress procedure TForm1.ImageEnIO1Progress(Sender: TObject; per: Integer); begin ProgressBar1.Position := per; if CheckBox3.Checked then begin ImageEnView1.Update; application.processmessages; end; end; // enable/disable acquire frame procedure TForm1.CheckBox5Click(Sender: TObject); begin edit3.enabled := CheckBox5.Checked; edit4.enabled := CheckBox5.Checked; edit5.enabled := CheckBox5.Checked; edit6.enabled := CheckBox5.Checked; ImageEnView1.IO.TwainParams.AcquireFrameEnabled := CheckBox5.Checked; ImageEnView1.IO.TwainParams.Update; FillBack; end; procedure TForm1.GroupBox1DblClick(Sender: TObject); begin ImageEnView1.IO.SelectAcquireSource();// ImageEnView1.IO.AcquireParams.SelectSource end; // change colors combobox procedure TForm1.ComboBox2Change(Sender: TObject); begin FillIn; ImageEnView1.IO.TwainParams.Update; // verify here... FillBack(); end; procedure TForm1.ComboBox3Change(Sender: TObject); begin ImageEnView1.IO.TwainParams.BitDepth.CurrentValue := ImageEnView1.IO.TwainParams.BitDepth[ ComboBox3.ItemIndex ]; FillBack(); end; end.