Autor Beitrag
jojo-sp
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 317

Windows XP Prof, Vista Ultimate & Home Premium, Windows 7
Delphi 7 Enterprise, Delphi 2009
BeitragVerfasst: Di 04.08.09 11:56 
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
ausblenden 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?

_________________
Ist der Ruf erst ruiniert, lebts sich gänzlich ungeniert...
Wilhelm Busch (1832 - 1908)
elundril
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 3747
Erhaltene Danke: 123

Windows Vista, Ubuntu
Delphi 7 PE "Codename: Aurora", Eclipse Ganymede
BeitragVerfasst: 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

_________________
This Signature-Space is intentionally left blank.
Bei Beschwerden, bitte den Beschwerdebutton (gekennzeichnet mit PN) verwenden.
jojo-sp Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 317

Windows XP Prof, Vista Ultimate & Home Premium, Windows 7
Delphi 7 Enterprise, Delphi 2009
BeitragVerfasst: 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...

_________________
Ist der Ruf erst ruiniert, lebts sich gänzlich ungeniert...
Wilhelm Busch (1832 - 1908)
Xentar
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2077
Erhaltene Danke: 2

Win XP
Delphi 5 Ent., Delphi 2007 Prof
BeitragVerfasst: Di 04.08.09 14:46 
Dann setzt halt im OnDestroy den Pointer noch auf nil.

_________________
PROGRAMMER: A device for converting coffee into software.
jojo-sp Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 317

Windows XP Prof, Vista Ultimate & Home Premium, Windows 7
Delphi 7 Enterprise, Delphi 2009
BeitragVerfasst: Di 04.08.09 15:46 
Hatte ich auch schon bereits probiert, aber dann schmiert mir das ganze schon beim nil setzen ab :-(

_________________
Ist der Ruf erst ruiniert, lebts sich gänzlich ungeniert...
Wilhelm Busch (1832 - 1908)
Xentar
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2077
Erhaltene Danke: 2

Win XP
Delphi 5 Ent., Delphi 2007 Prof
BeitragVerfasst: Di 04.08.09 16:35 
Definiere "abschmieren"...
Bei mir hat das mal funktioniert, also machste was falsch ;) Was hast denn bisher an Quellcode?

_________________
PROGRAMMER: A device for converting coffee into software.
jojo-sp Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 317

Windows XP Prof, Vista Ultimate & Home Premium, Windows 7
Delphi 7 Enterprise, Delphi 2009
BeitragVerfasst: 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:

_________________
Ist der Ruf erst ruiniert, lebts sich gänzlich ungeniert...
Wilhelm Busch (1832 - 1908)