BenBE hat folgendes geschrieben : |
Warum hast Du nicht einfach zum Abräumen ein OnClose in deinem Controller registriert Ich dachte, dafür ist dein Framework da  |
Das Problem mit dem OnClose ist ein wenig komplizierter
Von einer Form kriege ich nicht mitgeteilt, wenn sie geschlossen werden könnte, ich kriege nur das Destroy von Componenten mit. Das ist aber für verscheidene Sache zu spät. Zum Beispiel wenn Du ein PageControl hast und jedes TabSheet enthält eine Form aus einer DLL und theoretisch jedes dieser Forms kann ein anderes PageControl enthalten mit mehr Forms aus DLLs... you get my point..
OK, Wenn Das fenster also geschlossen wird und ich will beim Destroy die TabSheets leeren, spinnen die schon rum, weil Delphi denen das WindowHandle unterm Hintern weggezogen hat. (ich glaube auch, entgegen aller Erwartungen, dass der Owner der TabSheets nicht das PageControl ist, sondern die Form).
Die einzige Lösung, die ich gefunden habe, war, dem Controller ein spezielles Close schicken, dann kann der es an die Komponenten auf der Form schicken, wo die kritischen drauf reagieren können und entsprechend abräumen. Danach kommt dann das Close und Free auf die Form.
Und natürlich gibt es ein Event im Controller, der das Close anzeigt. Auch jede "unter"form kriegt ordentlich ihr Close und Free.
Nur aus irgendeinem Grund hat der Aufrufstack nichts richtig angezeigt und ich habe absolut nicht gesehen, dass ich mir das Event vom Form ja gestohlen habe, meins dafür gesetzt und dadrin dann das orginal aufgerufen
Aus dem Grund habe ich auch danach ne Stunde damit verbracht, die Pakete komplett neu zu bauen mit unterschiedlichen Pfaden für debug und release dcus etc.
"Ich bin bekannt für meine Ironie. Aber auf den Gedanken, im Hafen von New York eine Freiheitsstatue zu errichten, wäre selbst ich nicht gekommen." - George Bernhard Shaw