Freigabe eines verfügbaren Formulars nach Show
Hallo erstmal, ich hab da mal einen Frage.
Ich würde gern im nachfolgendem Code Show statt ShowModal verwenden. Wie wird das erzeugte Formular wieder ordnungsgemäß freigegeben? Reicht es im FormClose-Ereignis des Formulars Action auf caFree zu setzen? Was passiert wenn das Hauptformular geschlossen wird? Dann wird ja OnClose des untergeordneten nicht aufgerufen?
Delphi-Quellcode:
Danke schon mal für eure Hilfe.
procedure Suchen(aAlb: TAlbum);
begin with TFmDlgSuchen.Create(Application) do try Alb := aAlb; ShowModal; // Show; finally Free; end; end; Gruß Klaus. |
Re: Freigabe eines verfügbaren Formulars nach Show
Hi,
nein, der Code gibt es nicht ordnungsgemäß frei. Bei Formularen musst du Release statt Free verwenden. Dann arbeitet das ganze nämlich noch alle Messages ordentlich ab. Im OnClose auf caFree zu setzen sollte ausreichen. Bei ShowModal sollte es nicht möglich sein, das Hauptformular zu schließen, während deines offen ist (und selbst wenn doch, das OnClose müsste dann ausgeführt werden). Ansonsten wäre die CloseAction ziemlich sinnlos, wenn deren Nutzung zu eventuellen Speicherlecks führt. Mfg FAlter |
Re: Freigabe eines verfügbaren Formulars nach Show
[quote="RaSoWa1"]
Was passiert wenn das Hauptformular geschlossen wird? Dann wird ja OnClose des untergeordneten nicht aufgerufen? [delphi] Hallo Klaus Application ist ja der Owner von TFmDlgSuchen. Wenn die Anwendung beendet wird, wird das Application Objekt die Form TFmDlgSuchen freigeben. |
Re: Freigabe eines verfügbaren Formulars nach Show
Ich Danke euch beiden für die schnelle Antwort.
Wenn ich euch richtig verstanden habe müßte folgender Code ausreichen:
Delphi-Quellcode:
procedure Suchen(aAlb: TAlbum);
begin with TFmDlgSuchen.Create(FmAlben.ActiveMDIChild) do begin Alb := aAlb; Show; end; end;
Delphi-Quellcode:
Erste Tests waren erfolgreich.
procedure TFmDlgSuchen.FormClose(Sender: TObject;
var Action: TCloseAction); begin Action := caFree; inherited; end; Gruß Klaus. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:16 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz