关于窗体的释放:Close()方法是将窗体隐藏,即form.hide; 
释放窗体或是控件的标准用法是Form.Free,其实Free方法只是调用了Destroy()方法,在窗体不为nil时进行资源的释放,但并不将窗体实例置为nil,只有窗体实例没有创始化之前值才为nil,否则你要显示的将窗体实例置为nil. 
释放窗体的标准用法是: 
1、对于模态窗体 
Form1 := TForm.Create(Self); 
try 
your process 
Form1.ShowModal; 
finally 
Form1.Free; 
end;//可以确保资源的释放,而不会重复创建窗体实例。 
2、对于非模态窗体 
if not Assigned(Form1) then//窗体实例为nil; 
begin 
Form1 := TForm1.Create(Self); 
Form1.Show; 
end; 
注意要在窗体的OnClose和OnDestroy事件中分别写入事件处理代码。 
OnClose: 
Action := caFree; 
OnDestroy: 
Form1 := nil; 
//这样确保form1在释放后置为nil值,不会重复创建窗体实例
转载于:https://www.cnblogs.com/bytutu/archive/2012/02/09/2343597.html