AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Beim Beenden alle MDIChilds schließen
Thema durchsuchen
Ansicht
Themen-Optionen

Beim Beenden alle MDIChilds schließen

Ein Thema von Blechwolf · begonnen am 22. Sep 2003 · letzter Beitrag vom 29. Sep 2003
 
Blechwolf

Registriert seit: 9. Sep 2003
Ort: Aachen
126 Beiträge
 
Delphi 7 Professional
 
#1

Beim Beenden alle MDIChilds schließen

  Alt 22. Sep 2003, 12:10
Salut,
ich habe da mal folgendes Problem:
Wenn ich meine Application zu machen will, dann sollen alle MDI-Child Fenster geschloßen werden, aber nur, wenn sie alle gespeichert sind.
Ansonsten soll eine Abfrage kommen, daß die Daten nicht gespeichert sind, und ob der User fortsetzen will.
Ich habe das mal so gemacht:

Das ist der Aufruf aus der Main-Form
Delphi-Quellcode:
procedure TFrmMain.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
var
   i : integer;
begin
   for i := MDIChildCount-1 downto 0 do
     self.MDIChildren[i].Close();

  if self.MDIChildCount = 0 then
     CanClose := true
  else
     CanClose := false;
end;

procedure TFrmMain.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  Action := caFree;
   Application.Terminate();
end;
und so sieht das ganze in der Child-Form aus:
Delphi-Quellcode:
procedure TFrmSeries.FormCloseQuery(Sender: TObject;
  var CanClose: Boolean);
begin
   if not SaveState then
      if MessageDlg(Self.Caption+' - Data will be lost.'+#10+'Continue ?',
                            mtConfirmation,
                    [mbYes,mbNo],0) = mrYes then
       CanClose := true
    else
       CanClose := false
  else
     CanClose := true;
end;

procedure TFrmSeries.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  TCGraph.FreeAllSeries();
  TCGraph.Free();
   Action := caFree;
end;
Since so well.
Was jetzt passiert ist das folgende:
Wenn ich die Child-Forms von Hand schließe, klappt alles wunderbar. Es kommt die entsprechende Abfrage, und es passiert auch das was soll, wenn ich auf Ja oder Nein klicke.
Wenn ich jetzt aber mein MainForm schließen will, dann fragt er mich die Fenster in der Reihenfolge von hinten nach Vorne ab (wie in der Schleife angegeben) und wenn ich angebe er soll das ganze löschen, dann macht der die Fenster nicht zu.
Nachdem er vorne angekommen ist, fragt er mich das ganze nochmal von vorne nach hinten, wobei es hier funktioniert, wenn ich ihm sage er soll die Daten löschen.
Das Hauptprogramm wird dann aber trotzdem nicht geschlossen.
Hat irgendjemand die zündende Idee ?

Grüße

Blechwolf
Ein Schiff im Hafen ist sicher. Aber dafür werden Schiffe nicht gebaut. (engl. Sprichwort)
  Mit Zitat antworten Zitat
 


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 00:41 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