![]() |
FormCloseQuery Prozedur aufrufen
Moin!
Trotz ausgiebiger Suche bin ich noch zu keiner Lösung gekommen. Um vor dem Beenden des Programms nachzufragen, ob der User wirklich das Programm beenden möchte frage ich ihn in einer Messagebox. Dies funktioniert mit der Prozedur FormCloseQuery wunderbar.
Delphi-Quellcode:
Jetzt möchte ich aber auch einen Button, zum Schließen des Programms mit dieser Messagebox.
procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
var MsgText, MsgCaption: string; MsgType, UserResp: integer; begin MsgCaption := 'Beenden?'; MsgText := 'Wollen Sie wirklich beenden?'; MsgType := MB_YESNO + MB_ICONQUESTION + MB_DEFBUTTON1 + MB_APPLMODAL; UserResp := Application.MessageBox(PChar(MsgText), PChar(MsgCaption), MsgType); case UserResp of IDYES: canclose:=true; IDNO: canclose:=false; end; end; Wir rufe ich jetzt in der ButtonClick Prozedur die FormCloseQuery Prozedur auf? Muss sonst noch was in die ButtonClick Prozedur? Wenn ich nämlich mit einem Button die Anwendung mit einem normalem form1.close; beenden lasse, wird danach nochmal die FormCloseQuery aufgerufen. Und zweimal den User zu fragen, finde ich dann ein bisschen übertrieben. :wink: Hoffe, ich habe mich verständlich ausgedrückt :roll: |
Re: FormCloseQuery Prozedur aufrufen
Delphi-Quellcode:
Auch wenn ich über den Button schließe, kommt die abfrage nur einmal. Oder verstehe ich da jetzt was falsch?
procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
var Button: DWORD; begin Button := Messagebox(Handle, 'Schließen?', 'Test', MB_YESNO); if Button = ID_YES then CanClose := True else CanClose := False; end; procedure TForm1.Button1Click(Sender: TObject); begin Close; end; |
Re: FormCloseQuery Prozedur aufrufen
oder die Kurzform davon
Delphi-Quellcode:
Roderich (Oberlehrer :warn: )
procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin CanClose := Messagebox(Handle, 'Schließen?', 'Test', MB_YESNO) = ID_YES; end; |
Re: FormCloseQuery Prozedur aufrufen
:wall: :wall: :wall:
Warum einfach, wenn es auch kompliziert geht. Klar, wenn ich close; benutze wird FormCloseQuery abgefangen. Stimmt. Das ich da nicht selber drauf gekommen bin. Hab immer gleich die Fehlermeldung mit in die ButtonClick geschrieben und so nicht mehr dran gedacht es einfach wegzulassen. Danke nochmal!!!! |
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:44 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 by Thomas Breitkreuz