Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi MessageDlg - Rückgabewert überprüfung läuft schief ;( (https://www.delphipraxis.net/126962-messagedlg-rueckgabewert-ueberpruefung-laeuft-schief-%3B.html)

f4k3 5. Jan 2009 20:10


MessageDlg - Rückgabewert überprüfung läuft schief ;(
 
Habe im OnClose-Event eine Abfrage über einen MessageDlg ... der Abfragen soll ob das Programm beendet werden soll oder nicht.
Wenn "ja" gedrückt wurde, soll das Programm beendet werden ...
Wenn "nein" gedrückt wurde, soll nichts geschehen ...

Ich mach das ganze über die Close-Actions ... mein Code sieht folgendermaßen aus

Delphi-Quellcode:
procedure TfMain.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  { Sicherheitsabfrage ob Programm beendet werden soll }
  if MessageDlg('Programm beenden?', mtConfirmation, [mbYes, mbNo], 0) = mrYes then
  begin
    caFree;
  end
  else
  begin
    caNone;
  end;    
end;
und so ruf ich dass ganze auf ...

Delphi-Quellcode:
procedure TfMain.btnCloseClick(Sender: TObject);
begin
  { Programm schliessen }
  fMain.Close;
end;
Nun ... egal was "drücke" ... das Programm wird immer beendet ... das ganze ist insofern merkwürdig ...
dass ich diese Code-Zeile bestimmt schon 100x in anderen Programmen ausgeführt habe ... und da hats korrekt funktioniert :(

Oder bin ich einfach zu doof und hab was übersehen?!

Danke für eure Hilfe ;)

Euer f4k3

fkerber 5. Jan 2009 20:15

Re: MessageDlg - Rückgabewert überprüfung läuft schief ;(
 
Hi!

Müsstes du cafree und canone nicht der Var. action zuweisen?


Ciao, Frederic

f4k3 5. Jan 2009 20:17

Re: MessageDlg - Rückgabewert überprüfung läuft schief ;(
 
Zitat:

Zitat von fkerber
Hi!

Müsstes du cafree und canone nicht der Var. action zuweisen?


Ciao, Frederic

:lol:

Owman ... korrekt ;)

es müsste natürlich lauten ...

Delphi-Quellcode:
procedure TfMain.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  { Sicherheitsabfrage ob Programm beendet werden soll }
  if MessageDlg('Programm beenden?', mtConfirmation, [mbYes, mbNo], 0) = mrYes then
  begin
    Action := caFree;
  end
  else
  begin
    Action := caNone;
  end;    
end;
Immer nachm Urlaub :P xD ... Danke für die schnelle Antwort ;)

SirThornberry 5. Jan 2009 20:40

Re: MessageDlg - Rückgabewert überprüfung läuft schief ;(
 
im übrigen kannst du dir das caFree sparen da dies die Standardaction des Hauptforms ist:
Delphi-Quellcode:
procedure TfMain.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  { Sicherheitsabfrage ob Programm beendet werden soll } 
  if (MessageDlg('Programm beenden?', mtConfirmation, [mbYes, mbNo], 0) <> mrYes) then
  begin
    Action := caNone;
  end;    
end;

f4k3 5. Jan 2009 20:52

Re: MessageDlg - Rückgabewert überprüfung läuft schief ;(
 
Zitat:

Zitat von SirThornberry
im übrigen kannst du dir das caFree sparen da dies die Standardaction des Hauptforms ist:
Delphi-Quellcode:
procedure TfMain.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  { Sicherheitsabfrage ob Programm beendet werden soll } 
  if (MessageDlg('Programm beenden?', mtConfirmation, [mbYes, mbNo], 0) <> mrYes) then
  begin
    Action := caNone;
  end;    
end;

Danke fürn Tipp ;)

Hätt ich auch selbst drauf kommen können :lol:

EDatabaseError 5. Jan 2009 21:03

Re: MessageDlg - Rückgabewert überprüfung läuft schief ;(
 
Wäre für das ganze OnCloseQuery nicht angebrachter :mrgreen:

Tobi

SirThornberry 5. Jan 2009 21:06

Re: MessageDlg - Rückgabewert überprüfung läuft schief ;(
 
Ich habe auch immer das OnClose-Ereignis verwendet und habe darin nie Nachteile gesehen eher Vorteile da man einer größere Auswahl an möglichen Aktionen hat.


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:55 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