AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

MessageDlg wahrscheinlich ganz einfach

Ein Thema von Mariaki · begonnen am 7. Jul 2009 · letzter Beitrag vom 7. Jul 2009
Antwort Antwort
Benutzerbild von Mariaki
Mariaki

Registriert seit: 21. Sep 2008
64 Beiträge
 
RAD-Studio 2010 Arc
 
#1

MessageDlg wahrscheinlich ganz einfach

  Alt 7. Jul 2009, 16:44
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
Benedikt
  Mit Zitat antworten Zitat
DSFreak

Registriert seit: 24. Apr 2008
9 Beiträge
 
#2

Re: MessageDlg wahrscheinlich ganz einfach

  Alt 7. Jul 2009, 16:48
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;
  Mit Zitat antworten Zitat
Klaus01

Registriert seit: 30. Nov 2005
Ort: München
5.752 Beiträge
 
Delphi 10.4 Sydney
 
#3

Re: MessageDlg wahrscheinlich ganz einfach

  Alt 7. Jul 2009, 16:48
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
Klaus
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.534 Beiträge
 
Delphi 11 Alexandria
 
#4

Re: MessageDlg wahrscheinlich ganz einfach

  Alt 7. Jul 2009, 16:51
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]
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Klaus01

Registriert seit: 30. Nov 2005
Ort: München
5.752 Beiträge
 
Delphi 10.4 Sydney
 
#5

Re: MessageDlg wahrscheinlich ganz einfach

  Alt 7. Jul 2009, 16:52
Zitat von DeddyH:
Dann kommt der Dialog aber 2 mal, oder täusche ich mich?
wen meinst denn Du?

Grüße
Klaus
Klaus
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.534 Beiträge
 
Delphi 11 Alexandria
 
#6

Re: MessageDlg wahrscheinlich ganz einfach

  Alt 7. Jul 2009, 16:57
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
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Klaus01

Registriert seit: 30. Nov 2005
Ort: München
5.752 Beiträge
 
Delphi 10.4 Sydney
 
#7

Re: MessageDlg wahrscheinlich ganz einfach

  Alt 7. Jul 2009, 16:58
Zitat von DeddyH:
.. Wobei mich eine nochmalige Abfrage als Anwender nerven würde, ..
..mich auch.

Grüße
Klaus
Klaus
  Mit Zitat antworten Zitat
Benutzerbild von Mariaki
Mariaki

Registriert seit: 21. Sep 2008
64 Beiträge
 
RAD-Studio 2010 Arc
 
#8

Re: MessageDlg wahrscheinlich ganz einfach

  Alt 7. Jul 2009, 17:30
Jo danke für die Antwort.. ich dachte immer integer wären nur Zahlen aber das zählt ja auch dazu.
Benedikt
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#9

Re: MessageDlg wahrscheinlich ganz einfach

  Alt 7. Jul 2009, 17:55
Kannst du bitte dem Beitrag einen aussagekräftigen Titel geben?
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Benutzerbild von xZise
xZise

Registriert seit: 3. Mär 2006
Ort: Waldbronn
4.303 Beiträge
 
Delphi 2009 Professional
 
#10

Re: MessageDlg wahrscheinlich ganz einfach

  Alt 7. Jul 2009, 21:35
Zitat von Klaus01:
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
Fabian
Eigentlich hat MS Windows ab Vista den Hang zur Selbstzerstörung abgewöhnt – mkinzler
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:56 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