home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Chip 2002 March
/
Chip_2002-03_cd1.bin
/
zkuste
/
delphi
/
kompon
/
d5
/
SGSCAN.ZIP
/
SGScan.pas
< prev
next >
Wrap
Pascal/Delphi Source File
|
2000-12-08
|
2KB
|
80 lines
unit SGScan;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, extctrls, Forms, MultiTwain;
type
TSGScan = class(TComponent)
private
// property
FImage : TImage;
protected
{ Protected declarations }
public
constructor Create(AnOwner : TComponent); override;
destructor Destroy; override;
procedure Scan;
published
property Image : TImage read FImage write FImage;
end;
procedure CallbackFxn(CurDib: THandle; index: Integer); stdcall; forward;
procedure Register;
implementation
constructor TSGScan.Create(AnOwner : TComponent);
begin
inherited Create(AnOwner);
TWAIN_RegisterCallback(CallbackFxn);
FImage := nil;
end;
destructor TSGScan.Destroy;
begin
inherited;
end;
procedure TSGScan.Scan;
var
lhdib, ltestdib: hbitmap;
lw, lh: integer;
ln: Integer;
begin
if not Assigned(FImage) then
EXIT;
TWAIN_SelectImageSource(0);
lhdib := TWAIN_AcquireNative(0, 0);
ln := TWAIN_GetNumDibs;
if ln >= 1 then
begin
lTestDib := TWAIN_GetDib(0);
CopyDibIntoImage(lTestDib, FImage);
TWAIN_FreeNative(lTestDib);
lTestDib := 0;
end;
if ln = 2 then
begin
lTestDib := TWAIN_GetDib(1);
CopyDibIntoImage(lTestDib, FImage);
TWAIN_FreeNative(lTestDib);
lTestDib := 0;
end;
end;
procedure CallbackFxn(CurDib: THandle; index: Integer); stdcall;
begin
MessageBox(0, 'Called back!', 'CallbackFxn', mb_ok);
end;
procedure Register;
begin
RegisterComponents('Scanning', [TSGScan]);
end;
end.