我发现有的人在窗体OnClose事件写上
Action := caFree;
表示窗体关闭时释放窗体所占的内存。而我以前一般不处理窗体OnClose事件,那么应用程序关闭时窗体所占内存会自己释放掉吗?还是一定要处理OnClose并且写上Action := caFree;才能释放掉内存?
Action := caFree;
表示窗体关闭时释放窗体所占的内存。而我以前一般不处理窗体OnClose事件,那么应用程序关闭时窗体所占内存会自己释放掉吗?还是一定要处理OnClose并且写上Action := caFree;才能释放掉内存?
ModalForm:=TModalForm.Create(Application);
try
if ModalForm.ShowModal=mrOK then
{ do something}
finally
ModalForm.Free;
end;
无模式Form的标准写法:
SomeForm:=TSomeForm.Create(Application);
SomeForm.Show;在Form的OnClose事件中要将此Form释放掉:
procedure TSomeForm.FormClose(Sender:TObject; var Action:TCloseAction);
begin
Action:=caFree;
end;
防止出现一个Form的多个实例
if not Assigned(SomeForm) then // 也可写为 if SomeForm=nil then
SomeForm:=TSomeForm.Create(Application);
SomeForm.Show;在Form的OnClose事件中要将此Form释放掉:
procedure TSomeForm.FormClose(Sender:TObject; var Action:TCloseAction);
begin
Action:=caFree;
end;同时在Form的OnDestroy事件中将此Form变量设为nil:
procedure TfrmMaterial.FormDestroy(Sender: TObject);
begin
SomeForm:=nil;
end;