![]() |
Delphi MainForm ruft beim Schliessen kein OnFormDestroy auf
Hallo,
ich habe eine MainForm (MDIForm) welche im OnClose Action := caFree setzt. Jetzt habe ich allerdings festgestellt, dass von den Komponenten auf der Form kein Destroy aufgerufen wird. Beim weiteren Untersuchen stellte ich fest, dass auch das OnFormDestroy der Hauptform nicht ausgeführt wird. Im TCustumForm.Close wird ein Terminate ausgeführt, wenn die Action auf <> caNone ist und es die Application.MainForm ist. Hat einer eine Idee, warum das so ist ? Ich würde es gern haben, dass die Destroy events der Komponenten korrekt ausgeführt werden! Vielen Dank schonmal |
AW: Delphi MainForm ruft beim Schliessen kein OnFormDestroy auf
Application.MainForm wird durch das Application-Objekt freigegeben, nachdem die MainForm geschlossen wurde.
Deshalb gibt es eigentlich keinen Grund dieses Formular durch Action := caFree schon nach dem OnClose freizugeben. Terminate in TCustumForm.Close ist wahrscheinlich eine Art Notbremse, um in diesem Fall Folgefehler abzufangen. |
AW: Delphi MainForm ruft beim Schliessen kein OnFormDestroy auf
Also was ich sehe ist dass in Application.Components normalerweise die MainForm drin steht, bei meiner Anwendung leider nicht. Und deswegen wird auch das free nicht aufgerufen.
Jetzt müßte ich nur noch den grund wissen. Edit : Ein Application.InsertComponent(Self) auf der MainForm hat das Problem gelöst. Aber seltsam, daß das nicht autoamtisch passiert. |
AW: Delphi MainForm ruft beim Schliessen kein OnFormDestroy auf
Zitat:
|
AW: Delphi MainForm ruft beim Schliessen kein OnFormDestroy auf
Es wird nur ein Form automatisch erzeugt, das dpr sieht so aus :
Code:
Und wie gesagt, nachdem ich es manuell in die Application.Components eingefügt habe, ging alles wie es sollte..
Application.Initialize;
Application.CreateForm(TfMainForm, fMainForm); Application.Run; Seltsam. |
AW: Delphi MainForm ruft beim Schliessen kein OnFormDestroy auf
Zitat:
|
AW: Delphi MainForm ruft beim Schliessen kein OnFormDestroy auf
Kann es sein, dass du irgendwo den Konstruktor von TfMainForm überschrieben hast und dort fehlt jetzt z.b. der
Delphi-Quellcode:
Aufruf?
inherited
|
AW: Delphi MainForm ruft beim Schliessen kein OnFormDestroy auf
Eventuell auch mal so versuchen:
Delphi-Quellcode:
Application.Initialize;
Application.MainFormOnTaskBar := True; Application.CreateForm(TFMainForm, FMainForm); Application.Run; |
AW: Delphi MainForm ruft beim Schliessen kein OnFormDestroy auf
Zitat:
Danke an alle, ich lasse das jetyt erstmal so mit dem manuell einsetzen und schau dann mal wenn Zeit ist. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:41 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