Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Wie bei FormClose() auf abbrechen reagieren? (https://www.delphipraxis.net/49217-wie-bei-formclose-auf-abbrechen-reagieren.html)

toko 7. Jul 2005 03:30


Wie bei FormClose() auf abbrechen reagieren?
 
Hallo,

ich habe mal eine kurze Frage:

Wenn ich mein Programm über einen Menüeintrag schließe, dann rufe ich folgende Procedure auf:
Delphi-Quellcode:
{ Abfrage zum Speichern, danach Programm schließen}
procedure TfrmMain.showDialogSaveXMLFileAndClose;
begin
  if not IsXMLFileSaved then begin
    if Trim(XMLfile)='' then begin
      case MessageDlg('Möchten Sie die Änderungen speichern?', mtConfirmation, [mbYes, mbNo, mbCancel], 0) of
        { kein Dateiname angegeben und sichern }
        mrYes: begin
          if dlgSave.Execute then begin
            XMLfile := dlgSave.FileName;
            XMLDoc.save(XMLfile);
            IsXMLFileSaved := True;
            Close;
          end;
        end;
        { kein Dateiname angegeben und ohne zu sichern fortfahren }
        mrNo: begin
          Close;
        end;
        { Dialog abbrechen }
        mrCancel: begin
          exit;
        end;
      end;
    end else begin
      case MessageDlg('Möchten Sie die Änderungen in '+ XMLfile
        +' speichern?', mtConfirmation, [mbYes, mbNo, mbCancel], 0) of
        { Dateiname angegeben und sichern }
        mrYes: begin
          XMLDoc.save(XMLfile);
          IsXMLFileSaved := True;
          Close
        end;
        { Dateiname angegeben und ohne zu sichern fortfahren }
        mrNo: begin
          Close;
        end;
        { Dialog abbrechen }
        mrCancel: begin
          exit;
        end;
      end;
    end;
  end else begin
    close;
  end;
end;
Ich habe aber keine Ahnung, wie ich dieses Verhalten übernehmen kann, wenn ich auf den Schließen-Button des Fensters klicke. Oder habe ich eine Möglichkeit den Button zu deaktivieren bzw. auszublenden? Hab schon versucht mit BorderStyle zu arbeiten. "bsNone" sieht aber nicht gerade schön aus...

Kann mir jemand helfen?

Luckie 7. Jul 2005 03:39

Re: Wie bei FormClose() auf abbrechen reagieren?
 
Nutze das OnClose Ereignis der Form für solche Sachen oder OnCloseQuery kommt drauf an, was du machen willst.
Delphi-Quellcode:
// Button zum Schließen
procedure TForm1.Button1Click(Sender: TObject);
begin
  Close;
end;

// Wird immer ausgelöst, wenn Form geschlossen wird, auch über die Schaltfläche
// in der Titelleiste
procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
  if Messagebox(Handle, 'Programm schließen?', PChar(Caption), MB_YESNO or MB_ICONQUESTION) = IDNO then
    CanClose := False
  else
    CanClose := True;
end;

toko 7. Jul 2005 09:08

Re: Wie bei FormClose() auf abbrechen reagieren?
 
Hallo,

@Luckie
ich kann es gerade leider nicht ausprobieren, wird der Schließvorgang auch Unterbrochen, wenn ich auf "Abbrechen" meines Dialogs klicke?

Mit OnClose kann ich ja nicht arbeiten, da ich ja sonst eine Endosschleife programmiere...

Gruß Torsten

Steve 7. Jul 2005 12:32

Re: Wie bei FormClose() auf abbrechen reagieren?
 
Hi,

Anwendung von OnCloseQuery

Gruß
Stephan :dance:

toko 7. Jul 2005 16:55

Re: Wie bei FormClose() auf abbrechen reagieren?
 
Danke an euch, hat alles super geklappt :thumb:

Grüsse ToKo


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