![]() |
Formular mit ESC schliessen
Guten Tag Delphianer,
ich erzeuge im OnCreate-Ereignis eines Formulars verschiedene Objekte.
Delphi-Quellcode:
Diese gebe ich im OnDestroy-Ereignis des Formulars wieder frei.
Adresse := TOAdressen.Create;
KrankenBesuch := TOKrankenBesuche.create; DoppelMitglied := TOLODoppelMitglied.create; BrAnekdoten := TOAnekdoten.Create; SchluesselVerw := TOLogeSchluesselVerwaltung.create; BrSonstVerein := TOBrSonstigeVereine.Create;
Delphi-Quellcode:
Ich möchte nun mit der Taste-ESC das Formular schliessen:
Adresse.Free;
BrAnekdoten.Free; KrankenBesuch.Free; DoppelMitglied.Free; SchluesselVerw.Free; BrSonstVerein.Free; Wenn ich im FormKeyDown-Ereignis den Code
Delphi-Quellcode:
hinzufüge wird das Formular auch geschlossen und die Anwendung kehrt zum
if Key = VK_ESCAPE then
Close; Hauptfenster zurück. Werden damit aber auch die Objekte freigegeben? Welches ist die beste Vorgehensweise für so etwas? Vielen Dank für Eure Hilfe im Voraus. |
AW: Formular mit ESC schliessen
Das sollte der Fall sein. Setz doch einfach mal einen Breakpoint in beide Events und schau, ob der Debugger anhält. Aber warum sollte er das nicht?
|
AW: Formular mit ESC schliessen
Zitat:
|
AW: Formular mit ESC schliessen
Zitat:
|
AW: Formular mit ESC schliessen
Dafür gibt's TCustomForm.Release.
|
AW: Formular mit ESC schliessen
Release verhindert aber auch ein OnCloseQuery.
OnCloseQuery gibt es nur beim Close und Release ist einfach nur ein verzögertes Free. |
AW: Formular mit ESC schliessen
Ja, ich hatte gedacht, gelesen zu haben, er überschreibt Destroy, aber er setzt OnDestroy.
Ich würde Destroy überschreiben und Release benutzen. Oder man nimmt halt ein modales Fenster. Das kann man auch schließen, indem man beim Abbrechen-Button Cancel := True sitzt. |
AW: Formular mit ESC schliessen
Um das Thema abzuschließen.
Ich habe in allen Formularen im OnClose-Event
Delphi-Quellcode:
gesetzt. Wenn ich die Aussage von Uwe Rabe richtig verstehe,
Action := caFree;
wird dann auch das OnDestroy-Event ausgeführt. Vielen Dank an alle für die Hilfe. |
AW: Formular mit ESC schliessen
Du solltest wirklich mal einen Breakpoint in das/die Event(s) setzen und dann einfach mal das Programm mit dem Debugger starten. Dann hast du auch Gewissheit, dass das was du erreichen willst auch funktioniert. Zusätzlich solltest du evtl.
Delphi-Quellcode:
in deine DPR einfügen um zu sehen, ob du nicht noch andere Memory Leaks hast.
ReportMemoryLeaksOnShutdown := True;
|
AW: Formular mit ESC schliessen
OnDestroy wird ausgeführt, wenn die Form freigegeben wird.
Und caFree sagt, dass beim Schließen (Close) die Form freigegeben werden soll. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:52 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