关于delphi中self的使用(50分)

  • 主题发起人 主题发起人 luozhaoliang
  • 开始时间 开始时间
L

luozhaoliang

Unregistered / Unconfirmed
GUEST, unregistred user!
因为self 是指实例本身,但在创建一个基类mdi窗体后mdi_form_base,在onclose事件中写
action:=cafree;
self:=nil;//mdi_form_base:=nil;
在第二次创建窗体时就会出错啊
却不能将窗体实例指为空呢????
 
Onclose事件中你不可以把对象指向nil
因为这个时候后面的关闭操作还需要这个指针呢
要判断是否需要创建窗体可以这样:
if IsBadCodePtr(Form2) or (PPointer(Form2)^ <> Pointer(TForm2)) then
Form2 := TForm2.Create(Self)//窗体未创建就先创建

Form2.Show;
 
self:=nil;//mdi_form_base:=nil;
写在FormDestroy里
 
在mdi子窗体释放,是要这样写的
action:=cafree;
mdi_form:=nil;//将实例指针斌为空
但是我想在释放窗体时可不可以不用窗体实例名,而改用什么代词,如self,也达到将实例斌空的目的呢
 
很简单,不可能,因为 Self
procedure OnClose(Self: TForm
Sender: TObject
var Action: TCloseAction)

是这个
procedure OnClose(var Self: TForm
Sender: TObject
var Action: TCloseAction)

而不是这个

所以不会对参数 mdi_form 置空
 
那请问jeffrey_s,那怎么在释放窗体时可以不用窗体实例名,也达到将实例斌空的目的呢,代码要怎么写呢????????
 
如果可以这样, Java, .net就不用这么辛苦去做垃圾回收器了...
 
后退
顶部