关于动态创建Frame问题,释放的报错
动态创建Frame没问题,如下所示:
- Delphi(Pascal) code
var Ffrm_Manual:TFrm_Manual;
- Delphi(Pascal) code
if Ffrm_Manual<>nil then begin Ffrm_Manual.Free ; Ffrm_Manual:=nil ; end; if Ffrm_Manual=nil then begin Ffrm_Manual :=Tfrm_ManualCal.Create(Application); Ffrm_Manual .Parent :=Self ; Ffrm_Manual.Align:=alClient ; with Ffrm_Manual do
但是我在Frame本体里面的释放的时候,有时候会报错,有时候又不报错,如下面所示:
- Delphi(Pascal) code
procedure Tfrm_ManualCal.btn_CancelClick(Sender: TObject); begin if Ffrm_Manual<>nil then begin Ffrm_Manual.Free ; Ffrm_Manual:=nil ; end; end;
[解决办法]
不要在对象的事件里释放本身
因为btn_Cancel.OnClick释放Frame,会导致btnCancel自己释放,所以可能出错
可以用发WM_Close消息之类的方法关闭,而不是直接Free