![]() |
Form1.Deactivate abfangen
Hallo DP,
mal wieder eine Frage: Ich habe eine Form und eine Aktion, die länger dauert. Der User will die Form aber während der Aktion schließen. Da gibst es eine Exception, weil in der nun nicht vorhandenen Form Ausgaben/Anzeigen in Panels ausgeführt werden. Ich habe nachgesehen, welche Eigenschaft beim klicken vom X in der Form ausgeführt wird:
Delphi-Quellcode:
Ich denke, ich muss den Aufruf abfangen, weil meine Form schon deactiviert ist, wenn ich showmessage anzeigen lasse. Ist klar, dass ich eine boolsche Variable habe, die mir sagt, ob die Aktion noch läuft, oder die Form geschlossen werden darf.
procedure TForm5.FormDeactivate(Sender: TObject);
begin showmessage('deact'); end; Hoffentlich muss ich nicht erst das Object ableiten und neue Methoden einbauen (Graus!!!!) Hat da jemand einen Vorschlag? :coder2: Beste Grüße Go2EITS |
Re: Form1.Deactivate abfangen
Hi,
schau Dir mal ![]() Gruß Stephan :dance: |
Re: Form1.Deactivate abfangen
Danke Steve, ONCLOSE zeigt mir die Form und die Message [nachtrag] bevor dann das Fenster geschlossen wird. Und das will ich verhindern. [\nachtrag] Wie nun weiter? :gruebel:
|
Re: Form1.Deactivate abfangen
Was macht wohl der Parameter CanClose?
|
Re: Form1.Deactivate abfangen
Danke Steve, danke Lukie! :thumb:
Das ist es! Hier die Lösung mit F1:
Delphi-Quellcode:
Merci! Go2EITS
procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin if MessageDlg('Close the form?', mtConfirmation, [mbOk, mbCancel], 0) = mrCancel then CanClose := False; end; |
Re: Form1.Deactivate abfangen
Kleiner Schönheitsfehler in der vorstehenden Lösung: Damit das Programm beim nächsten Schließen beendet werden kann, denn wenn CanClose:=False ist, kommt man aus dem Programm nicht mehr so einfach raus, muss irgendwo ein CanClose:=True rein. z. B. so:
Delphi-Quellcode:
F1 hat nicht immer offensichtlich die beste Lösung. Alles klar?
procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin if MessageDlg('Close the form?', mtConfirmation, [mbOk, mbCancel], 0) = mrCancel then CanClose := False else CanClose := True; end; Beste Grüße Go2EITS |
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:47 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz