AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

MDI Form / MDI Child

Ein Thema von MaWi3.2 · begonnen am 20. Apr 2005 · letzter Beitrag vom 22. Apr 2005
Antwort Antwort
MaWi3.2

Registriert seit: 28. Dez 2004
Ort: Ilmenau
18 Beiträge
 
#1

MDI Form / MDI Child

  Alt 20. Apr 2005, 16:18
Hallo..

Also ich habe folgendes Problem
Ich habe ne MDI Form und erstelle die MDI Cilds so:
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
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
  Mit Zitat antworten Zitat
Benutzerbild von Jasocul
Jasocul

Registriert seit: 22. Sep 2004
Ort: Delmenhorst
1.355 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: MDI Form / MDI Child

  Alt 20. Apr 2005, 16:44
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.
Peter
  Mit Zitat antworten Zitat
MaWi3.2

Registriert seit: 28. Dez 2004
Ort: Ilmenau
18 Beiträge
 
#3

Re: MDI Form / MDI Child

  Alt 22. Apr 2005, 11:03
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?
  Mit Zitat antworten Zitat
Benutzerbild von Jasocul
Jasocul

Registriert seit: 22. Sep 2004
Ort: Delmenhorst
1.355 Beiträge
 
Delphi 11 Alexandria
 
#4

Re: MDI Form / MDI Child

  Alt 22. Apr 2005, 11:20
Korrekt. Außerdem solltest du die Methode Free und nicht Destroy verwenden, wenn es denn doch mal erforderlich ist.
Peter
  Mit Zitat antworten Zitat
MaWi3.2

Registriert seit: 28. Dez 2004
Ort: Ilmenau
18 Beiträge
 
#5

Re: MDI Form / MDI Child

  Alt 22. Apr 2005, 14:25
Alles klar dank Dir.
Dann also nur noch die Childs schließen und keine Gedanken um die Objekte machen..

MfG
MaWi
  Mit Zitat antworten Zitat
Antwort Antwort


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 03:04 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