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 MDI Form / MDI Child (https://www.delphipraxis.net/44533-mdi-form-mdi-child.html)

MaWi3.2 20. Apr 2005 15:18


MDI Form / MDI Child
 
Hallo..

Also ich habe folgendes Problem
Ich habe ne MDI Form und erstelle die MDI Cilds so:
Delphi-Quellcode:
child_op := Tf_Optionen.Create(f_Main);
dazu muß ich aber die Unit Optionen die die Klasse TF_Optionen enthält in f_Main einbinden, also unter 'uses'.
Hierbei sei gesagt das TF_Optionen das MDI-Child ist und f_Main die MDI-Form.

So und nun zum Problem.
Wie kann ich das Objekt löschen?
also
Delphi-Quellcode:
child_op.Destroy;
Da ich nicht weis ob das Child während der Laufzeit überhaupt geöffnet wurde?
Warum gibt es da nicht sowas wie OnClose?

Ich habe dazu auch schon hier im Forum was gelesen aber da stand nur was von ner eigenen Klasse für das Child schreiben das ne Nachricht an die MDI-Form gibt...
Diese kann ich ja wegen der 'circular-reference' nicht aus dem Child aufrufen??
Hab ich mir zumindest gedacht..

MaWi

Jasocul 20. Apr 2005 15:44

Re: MDI Form / MDI Child
 
So mache ich das, wenn ich die MDI-Anwendung beenden will:
Delphi-Quellcode:
var
  cnt : Integer;
begin
  // Folgende Routine ist erforderlich, da es sonst zu einer Zugriffsverletzung kommt, wenn noch
  // MDI-Child-Fenster geöffnet sind.
  if MDIChildCount > 0 then begin
    for cnt := MDIChildCount downto 1 do begin
      TForm(MDIChildren[cnt - 1]).Close;
      Application.ProcessMessages;
    end;
    while MDIChildCount > 0 do begin
      Application.ProcessMessages; // Hier ist der Knackpunkt: Windows bekommt sonst die Fenster-Handle
                                   // nicht frei.
    end;
  end;
end;
Im OnClose des MDIChilds sollte noch Action := caFree stehen.

Vielleicht hilft dir das weiter.

MaWi3.2 22. Apr 2005 10:03

Re: MDI Form / MDI Child
 
Danke erstmal..
So entferne ich die MDI-Childs.
Aber wie mache ich das mit den Objekten die ich erstellt habe
also child_op zum Beispiel.
Ich hab ja mal gelesen das für das zerstören der Objekte immer der Owner verantwortlich ist.
In diesem Fall also die f_Main..
Brauche ich also das Objekt child_op nicht selbst zerstören wenn das MDI-Child geschlossen wurde?

Jasocul 22. Apr 2005 10:20

Re: MDI Form / MDI Child
 
Korrekt. Außerdem solltest du die Methode Free und nicht Destroy verwenden, wenn es denn doch mal erforderlich ist.

MaWi3.2 22. Apr 2005 13:25

Re: MDI Form / MDI Child
 
Alles klar dank Dir.
Dann also nur noch die Childs schließen und keine Gedanken um die Objekte machen..

MfG
MaWi


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