调用 if not assigned(FormX) then formX := tform.create(self);释放 procedure TFormX.FormClose(Sender: TObject; var Action: TCloseAction); begin action := cafree; end; procedure TFormX.FormDestroy(Sender: TObject); begin formX := nil end;
补充:还需要在Project-->Options-->forms中将不需要自动创建窗体的窗体从Auto-create forms 导到Availabale forms中。
uses form1,....
然后在程序中加入(推荐使用这种)
from1:=TForm1.Create(Application);
form1.ShowModal;//如果是模式窗体,否则用.show;
form1.Free;或者用:
Application.Create(TForm1,form1);
form1.ShowModal;
form1.Free;
if not assigned(FormX) then formX := tform.create(self);释放
procedure TFormX.FormClose(Sender: TObject; var Action: TCloseAction);
begin
action := cafree;
end;
procedure TFormX.FormDestroy(Sender: TObject);
begin
formX := nil
end;
这种写发不安全
嘿咻嘿咻!
form3动态调用form4
form4动态调用form5 以上都采用ShowModal方式显示,现在有个问题在每次create(application)后,也fee了,但是就上面的例子中我如何关闭form2(在调用form3时),如何关闭form3(在调用form4时),以此类推。如果关闭了,在主窗体没有关闭的情况下,是否动态创建的窗体已经不占用系统资源了????