Entwickler-Ecke
Grafische Benutzeroberflächen (VCL & FireMonkey) - MDIChild freigeben
jojo-sp - Di 04.08.09 11:56
Titel: MDIChild freigeben
Moin moin,
vielleicht ist da wieder die Sache mit dem Wald und den Bäumen.
Ich habe ein MDIChild Fenster, welches ich erst zur Laufzeit manuell erzeuge und öffne.
Dabei Überprüfe ich, ob das Fenster existiert, wenn nicht, wird es über
Delphi-Quelltext
1:
| MyChildForm:= TMyChildForm.Create(Self); |
erzeugt.
Im Close des Child habe ich das caFree stehen.
Nach dem Schließen (bzw. beim Schließen) des Fensters, würde ich es gerne komplett freigeben (z.B. im Destroy das Formular freigeben über Free, aber Ergebnis: Exception) und erst beim erneuten Öffnen komplett neu erzeugen.
Habe ich da was Übersehen/Falschgedacht?
elundril - Di 04.08.09 13:20
afaik gibst du es beim Schließen mit caFree eigentlich frei. Das Objekt wird zerstört, der Speicher wieder freigegeben.
lg elundril
jojo-sp - Di 04.08.09 14:06
Sollte es ja eigentlich auch,
aber bevor ich es neu erzeuge, Prüfe ich mit = nil oder not assigned (beides probiert) MyChildForm ab.
Wenn es noch vorhanden ist, öffne ich es direkt mit Show. Da ich bei der Überprüfung für vorhanden ein True bekomme, erzeuge ich es nicht wieder neu und Springe direkt zum Show.
Dies stört vor allem, da ich beim Programmende nicht weiß, ob ich das verdammte Fenster noch freigeben muss, oder ob der User es bereits geschlossen hat bzw. weiß ich bei einem erneuten Klick auf Fenster öffnen nicht, ob das Fenster offen ist, solange es nicht verlässlich freigeben wird...
Xentar - Di 04.08.09 14:46
Dann setzt halt im OnDestroy den Pointer noch auf nil.
jojo-sp - Di 04.08.09 15:46
Hatte ich auch schon bereits probiert, aber dann schmiert mir das ganze schon beim nil setzen ab :-(
Xentar - Di 04.08.09 16:35
Definiere "abschmieren"...
Bei mir hat das mal funktioniert, also machste was falsch ;) Was hast denn bisher an Quellcode?
jojo-sp - Di 04.08.09 17:20
Du wirst lachen,
ich hatte das Formular einmal komplett aus dem Projekt entfernt und wieder hinzugefügt. Jetzt gehts auch mit dem nil beim Destroy.
Keine Anhung was mein Delphi 7 da wieder gefeiert hat. :gruebel:
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!