![]() |
AW: OnCloseQuery
Hallo,
in meinem Bsp wird OnClose nicht aufgerufen. Create -> Free (Destroy) wird immer aufgerufen Create -> Close wird nicht immer aufgerufen Und um gleichen Code zu haben, sollte man das OnDestroy nehmen. |
AW: OnCloseQuery
Liste der Anhänge anzeigen (Anzahl: 1)
@Frühlingsrolle
Create wird beim Erstellen aufgerufen. Close beim Schließen. Beim Hauptformular führt das Schließen eines des Formulares auch zum Programmende. Bei jedem weiteren Formular aber nicht. Wenn ich dort also im Create was erstelle, das Formular öffne (show), irgendwas mache, es dann schließe, dort alles im Create erstellte im OnClose bzw. OnCloseQuery freigebe und es dann später mit einem Show wieder anzeige, kann das zu eher unschönen Effekten (Zugriffsverletzungen) führen. Probier' das doch bitte einfach mal in einem Testprogramm mit mehreren Formularen aus. In allen Formularen, außer dem Hauptformular erstellst Du halt die Routinen für's Create und OnClose bzw. OnCloseQuery. Im Create erstellst Du Stringlisten oder sonstige Objekte, im OnClose bzw. OnCloseQuery gibst Du sie frei. Ins Hauptformular machst Du mehrere Buttons, je Unterformular einen und dann zeigst Du beim Klick auf den Button mit Show jeweils das entsprechende Unterformular an. Wie oft funktioniert das ohne Fehlermeldung? Wird beim Schließen des Hauptformulars OnCloseQuery der Unterformulare aufgerufen? Oder das OnClose der Unterformulare? |
AW: OnCloseQuery
Zitat:
Ich hatte schon an meinen Kenntnissen gezweifelt. Im übrigen bin ich der Meinung Daten (z.B. Stringlisten) sind unabhängig von Formularen. Diese aufzuräumen muß irgendwo anders stattfinden. Vorzugsweise da wo sie verarbeitet werden. Gruß K-H |
AW: OnCloseQuery
Weil es "besser" ist alles auf der Ebene freizugeben, wo es erstellt wurde.
OnShow->OnHide/Close OnCreate->OnDestroy Constructor->Destructor Und wie mehrmals erwähnt, wird OnClose nicht immer aufgerufen, weswegen es sich für Freigaben garnicht eignet. (außer es gibt nochmal eine Freigabe im OnDestroy) |
AW: OnCloseQuery
Zitat:
Nur beim Hauptformular führt das Schließen des eines HauptfFormulares auch zum Programmende. Und die Stringliste in meinem Beispiel diente nur zur Verdeutlichung und zum Auslösen eines Fehlers. Sie war nicht als empfehlenswertes Vorgehen gedacht. |
AW: OnCloseQuery
Zitat:
Gruß K-H |
AW: OnCloseQuery
Hallo,
mir schwirrt jetzt der Kopf. Aufräumen (z.B. Stringlisten) des Hauptfenstern bei OnDestroy. Ist das eure Meinung? Ob MeeageBox, ein selbst gebautes Fenster oder VistaTaskDialog ist übrigens gleich. Bei allen drei Konstrukten trat der von mir beschriebene Zugriffsfehler auf. Ich werde das Aufräumen verlegen. Willie. |
AW: OnCloseQuery
Jedenfalls nicht im OnClose oder OnCloseQuery.
Beide können beliebig oft oder aber auch garnicht aufgerufen werden. Das Vorhandensein dieser beiden Routinen impliziert nicht deren Aufruf. Oder: Aufrufhäufigkeit von OnClose: 0:n Aufrufhäufigkeit von OnCloseQuery: 0:n Aufrufhäufigkeit von OnDestroy: 1 Was davon mag der sicherere Ort für das Aufräumen von Objekten sein? |
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:00 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