Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi FormCloseQuery Prozedur aufrufen (https://www.delphipraxis.net/17057-formclosequery-prozedur-aufrufen.html)

notam 27. Feb 2004 14:15


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:
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;
Jetzt möchte ich aber auch einen Button, zum Schließen des Programms mit dieser Messagebox.
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:

Luckie 27. Feb 2004 14:22

Re: FormCloseQuery Prozedur aufrufen
 
Delphi-Quellcode:
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;
Auch wenn ich über den Button schließe, kommt die abfrage nur einmal. Oder verstehe ich da jetzt was falsch?

roderich 27. Feb 2004 15:16

Re: FormCloseQuery Prozedur aufrufen
 
oder die Kurzform davon

Delphi-Quellcode:
procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
  CanClose := Messagebox(Handle, 'Schließen?', 'Test', MB_YESNO) = ID_YES;
end;
Roderich (Oberlehrer :warn: )

notam 27. Feb 2004 15:24

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 09:11 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