Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Twain-Modul modal starten (https://www.delphipraxis.net/184154-twain-modul-modal-starten.html)

Perlsau 3. Mär 2015 12:18

Twain-Modul modal starten
 
Moinsen,

gibt es eine Möglichkeit, mit DelphiTwain das Scan-Modul modal zu starten, so daß der Anwender nicht auf Formulare der Hauptanwendung zugreifen kann, während das Scan-Modul sichtbar ist?

Hintergrund: Greift der Anwender (z.B. aus Ungeduld, weil der Scanvorgang so lange dauert) auf Formulare der Hauptanwendung zu, löst das einen Fehler aus, wenn gerade gescannt wird. Der Scanner bleibt stehen und läßt sich erst durch einen Neustart (bzw. Windows Ab- und Anmeldung) wieder zum Arbeiten bewegen.

Im Projekt XXX.exe ist eine Exception der Klasse $C0000008 mit der Meldung 'system exception (code 0xc0000008) at 0x76e605b7' aufgetreten.

Der Aufruf sieht so aus:
Delphi-Quellcode:
Procedure TFormScanner.Bit_ScanStartClick(Sender: TObject);
begin
  Twain.SelectedSourceIndex := ListBox_Quellen.ItemIndex;

  If Assigned(Twain.SelectedSource) Then
  Begin
    Twain.SelectedSource.Loaded := True;
    Twain.SelectedSource.Modal  := True;
    Twain.SelectedSource.ShowUI := True;
    Twain.SelectedSource.Enabled := True;
  End;
end;
Offenbar zeitigt
Delphi-Quellcode:
Twain.SelectedSource.Modal := True;
nicht die erhoffte Wirkung, ich kann während des Scannens noch immer auf das Formular FormScanner zugreifen und z.B. die Grafik speichern. Danach erscheint dann die obige Fehlermeldung, manchmal auch erst beim nächsten Scanversuch, auch nach Neustart der Anwendung. Drücke ich auf Fortsetzen, kommt dieselbe Meldung in anderer Form noch einmal:

In Projekt XXX.exe trat ein Problem mit folgender Meldung auf: 'system exception (code 0xc0000008) at 0x76e605b7'. Prozess angehalten. Mit Einzelne Anweisung oder Start fortsetzen.

mm1256 3. Mär 2015 12:38

AW: Twain-Modul modal starten
 
Liste der Anhänge anzeigen (Anzahl: 1)
Ich habe einen modalen Dialog dazwischen geschaltet. Die Form aus der gescannt wird ruft diesen modalen Dialog auf, wo ich auch die Optionen zum Scannen einstelle.

Perlsau 3. Mär 2015 12:50

AW: Twain-Modul modal starten
 
Liste der Anhänge anzeigen (Anzahl: 1)
Das mache ich genauso: Meine Anwendung ruft eine Form modal auf, von der aus das Scan-Modul gestartet werden kann. Während das Scan-Modul sichtbar ist, soll für den Anwender jedoch keine Form der eigentlichen Anwendung erreichbar sein, weil es sonst zu dieser Fehlermeldung kommt. Im Moment sorgt ein Klick auf die Hauptform dafür, daß diese mitsamt meinem Scan-Dialog in den Vordergrund hüpft und daß ich im Scan-Dialog Buttons klicken kann.

Wenn ich dagegen z.B. von CorelPaint aus das Twain-Modul aufgerufen habe, kann ich nicht auf die Form von CorelPaint klicken, weil dort das Twain-Modul definitiv modal aufgerufen wird.

Ich versuche jetzt mal, die Eigenschaft Enabled des modalen Scan-Dialogs meiner Anwendung auf False zu setzen und mit irgend einem Event don TDelphiTwain wieder auf True. Schau'n mer mal :?

Nachtrag aus der Twain-Onlinehilfe:
property Modal: Boolean;
This property sets if the windows displayed by the source are modal with the application windows. Setting this property to TRUE makes application windows disabled while source is displaying any window. This property is recommended to set to TRUE.

mm1256 3. Mär 2015 14:06

AW: Twain-Modul modal starten
 
ScanDialog.Enabled := false und dann Scannen?

Perlsau 1. Apr 2015 08:53

AW: Twain-Modul modal starten
 
Weder Enabled := False noch Visible := False hat irgend eine Auswirkung. Offenbar kann ein Formular sich nicht selbst deaktivieren ...


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:32 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz