unit umain; interface uses Windows, Messages, SysUtils, {$IfNDef VER130} Variants, {$EndIf} Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ieview, imageenview, ExtCtrls; type TMainForm = class(TForm) Panel1: TPanel; ImageEnView1: TImageEnView; Button1: TButton; Button4: TButton; procedure Button1Click(Sender: TObject); procedure Button4Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var MainForm: TMainForm; implementation {$R *.dfm} {$R WindowsTheme.res} uses iexAcquire; function PurifyFileName(const filename:string):string; var i: integer; begin result := filename; for i:=1 to length(result) do if (result[i]=':') or (result[i]='_') then result[i] := '_'; end; // Set Twain settings procedure TMainForm.Button1Click(Sender: TObject); begin // Ask user to select a Twain device ImageEnView1.IO.SelectAcquireSource([ieaTwain]); // Next call to "Acquire" will only show scanner user interface ImageEnView1.IO.TwainParams.ShowSettingsOnly := true; // Show scanner user interface, so user can set settings if ImageEnView1.IO.Acquire() then begin // Save settings to file // Here we use scanner name. Anyway you could have different settings like "Gray scale", "Color", "ADF"... with ImageEnView1.IO.TwainParams do SourceSettings.SaveToFile(PurifyFileName(SourceName[SelectedSource])+'.settings'); end; end; // Acquire procedure TMainForm.Button4Click(Sender: TObject); var FileName:string; begin // Ask user to select a Twain device ImageEnView1.IO.SelectAcquireSource([ieaTwain]); with ImageEnView1.IO.TwainParams do begin // Does this settings exists? FileName := PurifyFileName(SourceName[SelectedSource])+'.settings'; if not FileExists(FileName) then begin ShowMessage('Settings not saved for this device. Please click "Set Twain Settings".'); exit; end; // We don't need device dialog (optional) VisibleDialog := false; // Disable ShowSettingsOnly (this is the default, but could be true from previous session) ShowSettingsOnly := false; // Load device settings SourceSettings.LoadFromFile(FileName); FeederEnabled := false; end; // Capture image using loaded device settings ImageEnView1.IO.Acquire(); end; end.