![]() |
MDI Form / MDI Child
Hallo..
Also ich habe folgendes Problem Ich habe ne MDI Form und erstelle die MDI Cilds so:
Delphi-Quellcode:
dazu muß ich aber die Unit Optionen die die Klasse TF_Optionen enthält in f_Main einbinden, also unter 'uses'.
child_op := Tf_Optionen.Create(f_Main);
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:
Da ich nicht weis ob das Child während der Laufzeit überhaupt geöffnet wurde?
child_op.Destroy;
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 |
Re: MDI Form / MDI Child
So mache ich das, wenn ich die MDI-Anwendung beenden will:
Delphi-Quellcode:
Im OnClose des MDIChilds sollte noch Action := caFree stehen.
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; Vielleicht hilft dir das weiter. |
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? |
Re: MDI Form / MDI Child
Korrekt. Außerdem solltest du die Methode Free und nicht Destroy verwenden, wenn es denn doch mal erforderlich ist.
|
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 18:52 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