Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Form.Free oder Form.Release bei Form.ShowModal? (https://www.delphipraxis.net/119485-form-free-oder-form-release-bei-form-showmodal.html)

littleDave 27. Aug 2008 10:46


Form.Free oder Form.Release bei Form.ShowModal?
 
Servus :hi:

ich hab da mal kurz ne Frage:
Normalerweise soll man ja bei einer TForm-Komponente nicht direkt Free sondern Release aufrufen. Jetzt ist meine Frage, ob das auch bei .ShowModal so gilt?

Ist das richtig?
Delphi-Quellcode:
myForm := TmyForm.Create(nil)
try
  myForm.ShowModal;
finally
  myForm.Free; // <--- das hier
end;
Oder das hier?
Delphi-Quellcode:
myForm := TmyForm.Create(nil)
try
  myForm.ShowModal;
finally
  myForm.Release; // <--- oder das hier
end;
Ich bin mir gerade nicht sicher, da nach ShowModal die Form ja schonmal nicht mehr sichtbar ist und die Events OnClose und OnCloseQuery schon aufgerufen wurden.

Danke schonmal für jede Antwort

HeikoAdams 27. Aug 2008 10:54

Re: Form.Free oder Form.Release bei Form.ShowModal?
 
Also die Onlinehilfe von Delphi sagt eindeutig:
Zitat:

Jede Ereignisbehandlungsroutine für das Formular oder für dessen untergeordnete Objekte sollte Release anstelle von Free (Delphi) oder Delete (C++) benutzen. Ansonsten kann ein Speicherzugriffsfehler auftreten.

littleDave 27. Aug 2008 11:02

Re: Form.Free oder Form.Release bei Form.ShowModal?
 
Den Absatz kenn ich auch, jedoch (dachte ich), dass nach ShowModal die Form an sich zwar noch besteht, aber keine Messages mehr empfängt. Bei nicht Modalen Forms schreib ich eigendlich auch immer Release hin, jedoch bei ShowModal bin ich mir nie ganz sicher. Es spricht zwar nichts dagegen, hier ebenfalls Release aufzurufen, jedoch wollt ich es einfach mal wissen, ob ShowModal da eine Ausnahme ist.

jbg 27. Aug 2008 11:05

Re: Form.Free oder Form.Release bei Form.ShowModal?
 
Zitat:

Zitat von littleDave
jedoch bei ShowModal bin ich mir nie ganz sicher.

Lese dir nochmal den Satz "Jede Ereignisbehandlungsroutine für das Formular" durch. Also solange du das MyForm.ShowModal nicht aus einer MyForm-Ereignisbehand... EventHandler aufrufst (was recht schwer möglich ist), musst du das Release nicht verwenden.

mirage228 27. Aug 2008 11:06

Re: Form.Free oder Form.Release bei Form.ShowModal?
 
Zitat:

Zitat von littleDave
Delphi-Quellcode:
myForm := TmyForm.Create(nil)
try
  myForm.ShowModal;
finally
  myForm.Free; // <--- das hier
end;
Oder das hier?

Also ich mache das mit meinen Forms immer so und das hat noch nie Probleme bereitet (und dürfte auch wohl richtig sein).

littleDave 27. Aug 2008 11:12

Re: Form.Free oder Form.Release bei Form.ShowModal?
 
Zitat:

Zitat von jbg
Lese dir nochmal den Satz "Jede Ereignisbehandlungsroutine für das Formular" durch. Also solange du das MyForm.ShowModal nicht aus einer MyForm-Ereignisbehand... EventHandler aufrufst (was recht schwer möglich ist), musst du das Release nicht verwenden.

:wall: das hab ich überlesen :wall: genau das. :wall: DANKE!

Zitat:

Zitat von mirage228
Also ich mache das mit meinen Forms immer so und das hat noch nie Probleme bereitet (und dürfte auch wohl richtig sein).

Probleme hat ich auch noch nicht, jedoch wollt ich auf Nummer sicher gehen.

Danke für eure Antworten - wieder etwas schlauer geworden :thumb:


Alle Zeitangaben in WEZ +1. Es ist jetzt 12:09 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