Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Form richtig destroyen ? (https://www.delphipraxis.net/126162-form-richtig-destroyen.html)

HolgerCW 19. Dez 2008 10:57


Form richtig destroyen ?
 
Hallo zusammen,

ich mache folgendes:

Delphi-Quellcode:
If FM_AV = nil then Application.CreateForm(TFM_AV, FM_AV);
FM_AV.Show;
Form wird angezeigt.

Danach mache ich folgendes:

Delphi-Quellcode:
procedure TFM_AV.FormClose(Sender: TObject; var Action: TCloseAction);
begin

 FM_AV.Destroy;

end;
Form wird entfernt.

Wenn ich nun wieder die Form anzeigen lassen will, klappt das nicht mehr, warum ?

Gruss

Holger

taaktaak 19. Dez 2008 11:01

Re: Form richtig destroyen ?
 
eigentlich
Delphi-Quellcode:
Form.Release;
Form:=nil

mkinzler 19. Dez 2008 11:01

Re: Form richtig destroyen ?
 
Delphi-Quellcode:
procedure TFM_AV.FormClose(Sender: TObject; var Action: TCloseAction);
begin
    Action := caFree;
end;
reicht

Danach existiert das Fenter ja nicht mehr

HolgerCW 19. Dez 2008 11:09

Re: Form richtig destroyen ?
 
Vielen dank. Ich muss auf jeden Fall Form := nil machen, egal welche Methode ich von euch benutze.

Danke

Holger

mkinzler 19. Dez 2008 11:12

Re: Form richtig destroyen ?
 
Oder auf das automatische Freigeben verzichten und FreeAndNil() verwenden

HolgerCW 19. Dez 2008 11:23

Re: Form richtig destroyen ?
 
Das klappt auch. Vielen dank.

Blup 19. Dez 2008 13:56

Re: Form richtig destroyen ?
 
Delphi-Quellcode:
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  if not (fsModal in FormState) then
    Action := caFree;
end;

procedure TForm1.FormDestroy(Sender: TObject);
begin
  FForm1 := nil;
end;
Modal angezeigte Fenster sollte man auf keinen Fall mit caFree freigeben.
Das führt zu willkürlichen Schutzverletzungen in der Methode ShowModal.
In diesem Fall nach ShowModal das Formular selbst freigeben.


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