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 wahrscheinlich ganz einfach (https://www.delphipraxis.net/136762-messagedlg-wahrscheinlich-ganz-einfach.html)

Mariaki 7. Jul 2009 15:44


MessageDlg wahrscheinlich ganz einfach
 
Hi,
mal ne ganz dumme Frage. Ist wahrscheinlich ganz einfach, aber ich komm einfach nicht drauf.
Ich will beim Schließen abfragen, ob man abspeichern will. Das wollte ich da so machen:
Delphi-Quellcode:
procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
If MessageDlg('Wollen sie die Rechnung speichern?',mtConfirmation,mbYesNoCancel,0)=id_yes then
  //Speichern
else
  if MessageDlg('Wollen sie die Rechnung speichern?',mtConfirmation,mbYesNoCancel,0)=id_no then
    close
  else
    CanClose:=False;
end;
Aber das Problem ist das sich hierbei der Dialog im Falle von 'No' der Dialog zweimal öffnet.
Wie gesagt ist wahrscheinlich ganz einfach aber es will mir einfach nicht einfallen.

Gruß Mariaki

DSFreak 7. Jul 2009 15:48

Re: MessageDlg wahrscheinlich ganz einfach
 
Einfach den Wert in einer Variablen speichern.

Delphi-Quellcode:
procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
var
  tmp : Byte;
begin
tmp := MessageDlg('Wollen sie die Rechnung speichern?',mtConfirmation,mbYesNoCancel,0)
If tmp=id_yes then
  //Speichern
else
  if tmp=id_no then
    close
  else
    CanClose:=False;
end;

Klaus01 7. Jul 2009 15:48

Re: MessageDlg wahrscheinlich ganz einfach
 
Delphi-Quellcode:
if MessageDlg('Wollen sie die Rechnung speichern?',mtConfirmation,mbYesNoCancel,0)=id_no then
  close // hier wird das Close Event wieder gestartet und dadurch die CloseQuery nochmals ausgeführt.
else
  CanClose:=False;
end;
vielleicht klappt es so besser:
Delphi-Quellcode:
procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
  canClose:=true;
  If MessageDlg('Wollen sie die Rechnung speichern?',mtConfirmation,mbYesNoCancel,0)=id_yes then
    //Speichern
  else
       // die Fragestellung etwas überarbeitet
    if MessageDlg('Wollen sie die Rechnung wirklich nicht speichern?',mtConfirmation,mbYesNoCancel,0)=id_yes then
      close
    else
      CanClose:=False;
end;
Grüße
Klaus

DeddyH 7. Jul 2009 15:51

Re: MessageDlg wahrscheinlich ganz einfach
 
Dann kommt der Dialog aber 2 mal, oder täusche ich mich?

[edit] Anderer Vorschlag:
Delphi-Quellcode:
CanClose := True;
case MessageDlg('Wollen sie die Rechnung speichern?',mtConfirmation,mbYesNoCancel,0) of
  ID_YES: Speichern;
  ID_CANCEL: CanClose := False;
end;
[/edit]

Klaus01 7. Jul 2009 15:52

Re: MessageDlg wahrscheinlich ganz einfach
 
Zitat:

Zitat von DeddyH
Dann kommt der Dialog aber 2 mal, oder täusche ich mich?

wen meinst denn Du?

Grüße
Klaus

DeddyH 7. Jul 2009 15:57

Re: MessageDlg wahrscheinlich ganz einfach
 
Ich hatte Dich gemeint, aber Du hast ja bereits editiert. Wobei mich eine nochmalige Abfrage als Anwender nerven würde, aber das muss ja jeder selber wissen :zwinker:

Klaus01 7. Jul 2009 15:58

Re: MessageDlg wahrscheinlich ganz einfach
 
Zitat:

Zitat von DeddyH
.. Wobei mich eine nochmalige Abfrage als Anwender nerven würde, ..

..mich auch.

Grüße
Klaus

Mariaki 7. Jul 2009 16:30

Re: MessageDlg wahrscheinlich ganz einfach
 
Jo danke für die Antwort.. ich dachte immer integer wären nur Zahlen aber das zählt ja auch dazu.

SirThornberry 7. Jul 2009 16:55

Re: MessageDlg wahrscheinlich ganz einfach
 
Kannst du bitte dem Beitrag einen aussagekräftigen Titel geben? :)

xZise 7. Jul 2009 20:35

Re: MessageDlg wahrscheinlich ganz einfach
 
Zitat:

Zitat von Klaus01
Zitat:

Zitat von DeddyH
.. Wobei mich eine nochmalige Abfrage als Anwender nerven würde, ..

..mich auch.

Grüße
Klaus

Genau. Er wollte nämlich nur wissen, wie er dies verhindert, weil er ja drei verschiedene Zustände überprüft. Ich hätte mich für DeddyHs Verschlag entschieden, da dieser am "einfachsten" ist.

MfG
xZise


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