Ich würde nicht bei jedem Aufruf die Komponente zerstören und neu aufbauen...
Ausserdem wo gibst Du an, was mit dem gescannten Bild passieren soll und dass nach einem Bild Schluss sein soll ?
Probier mal anstelle von
Delphi-Quellcode:
FreeAndNil(ftwain);
fTwain :=TDelphiTwain.Create(nil);
das hier :
Delphi-Quellcode:
if not Assigned(fTwain)
then begin
fTwain := TDelphiTwain.Create(Self);
fTwain.OnTwainAcquire := fTwainTwainAcquire;
end;
{...}
Delphi-Quellcode:
procedure TForm1.FTwainTwainAcquire(Sender: TObject; const Index: Integer;
Image: TBitmap; var Cancel: Boolean);
begin
Image.SaveToFile('C:\Temp\MyImage.BMP'); {Mach was mit dem Bild}
Cancel := TRUE; {Nur ein Bild scannen}
end;
Wenn Du dann noch SelectedSource global definierst, mit -1 initialisierst und nur mit fTwain.SelectSource
neu zuweist, wenn der Wert für SelctedSource=-1 ist, dann kannst Du die Abfragen nach der Scanquelle auf
einmal pro Programmausführung reduzieren