form1.FreeOnRelease;
form1.Free;
form1.FreeInstance;
form1.Destroy;
form1.DestroyWindowHandle ;
form1.Activate;
form1.Action:=cafree; //此种写法是错误的,[Error] Unit1.pas(32): Incompatible types: 'TBasicAction' and 'TCloseAction'
但是在一个窗体的 onclose中写:
action:=cafree;又是正确的。
form1.Free;
form1.FreeInstance;
form1.Destroy;
form1.DestroyWindowHandle ;
form1.Activate;
form1.Action:=cafree; //此种写法是错误的,[Error] Unit1.pas(32): Incompatible types: 'TBasicAction' and 'TCloseAction'
但是在一个窗体的 onclose中写:
action:=cafree;又是正确的。
form1.FreeOnRelease;
form1.Free;
form1.Destroy;
第一个是使用在COM中的。一般情况下不要直接调用。
第二个能够自动识别对象是否为nil。
第三个是类的析构函数。一般情况下应该在内部重载,不要直接调用。
如果是多窗体,则由显示窗体a到显示窗体b时,窗体a执行OnDeactivate事件,而窗体b会
执行OnActivate事件.
当我们释放对象时,最好调用form1.Free;,因为它会判断对象是否为nil,不为nil时会调用
form1.Destroy;,这样比较安全,不易出错。