Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Problem mit Abfrage zum beenden ohne speichern (https://www.delphipraxis.net/112681-problem-mit-abfrage-zum-beenden-ohne-speichern.html)

DeddyH 25. Apr 2008 09:06

Re: Problem mit Abfrage zum beenden ohne speichern
 
Wie Sharky schon sagt, benutze OnCloseQuery und setze die Variable CanClose entsprechend.

5etH 25. Apr 2008 09:11

Re: Problem mit Abfrage zum beenden ohne speichern
 
ich habe das nun so gelöst

Delphi-Quellcode:
procedure Tmain.FormClose(Sender: TObject; var Action: TCloseAction);
begin
     if not (Gespeichert) then
      begin
      if (MessageDlg('Wollen Sie das Programm beenden ohne zu speichern!?'
          ,mtWarning, [mbYes, mbNo], 0, mbYes) = mrNo) then
          action := caNone;
          end;
          //gespeichert := true;
     end;

Sharky 25. Apr 2008 09:14

Re: Problem mit Abfrage zum beenden ohne speichern
 
Zitat:

Zitat von 5etH
ich habe das nun so gelöst

Finde ich persönlich nicht den sauberen Weg.

Warum nicht so:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
begin
  Close;
end;

procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
var
  MsgResult : Integer;
begin
  if not (Gespeichert) then
  begin
    MsgResult := MessageDlg('Wollen Sie das Programm beenden ohne zu speichern!?',
     mtWarning, [mbYes, mbNo], 0, mbYes);
    case MsgResult of
      mrYes : CanClose := True;
      mrNo : CanClose := False;
    end;
  end
  else
  begin
    CanClose := True; // Hatte ich im ersten Post vergessen :oops:
  end;
end;
[Edit]: Etwas nachgetragen ;-)

Aurelius 25. Apr 2008 09:15

Re: Problem mit Abfrage zum beenden ohne speichern
 
Nimm die Lösung von Sharky, ist besser ^^

DeddyH 25. Apr 2008 09:21

Re: Problem mit Abfrage zum beenden ohne speichern
 
Etwas kürzer, aber mit derselben Logik:
Delphi-Quellcode:
procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
  CanClose := true;
  if not (Gespeichert) then
  begin
    CanClose := MessageDlg('Wollen Sie das Programm beenden ohne zu speichern!?',
     mtWarning, [mbYes, mbNo], 0, mbYes) = mrYes;
  end;
end;

Sharky 25. Apr 2008 09:25

Re: Problem mit Abfrage zum beenden ohne speichern
 
Zitat:

Zitat von DeddyH
Etwas kürzer, aber mit derselben Logik:

Hihi,

darauf habe ich ja nur gewartet ;-)
Ich habe den Code mit absicht nicht optimiert um den Ablauf genau aufzuzeigen :tongue:

DeddyH 25. Apr 2008 09:27

Re: Problem mit Abfrage zum beenden ohne speichern
 
Schadet ja nicht, so kann er sich zwischen beiden Möglichkeiten entscheiden und hat die Logik trotzdem schön nachvollziehbar vor Augen :zwinker: :cheers:


Alle Zeitangaben in WEZ +1. Es ist jetzt 12:16 Uhr.
Seite 2 von 2     12   

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