读书人

窗体继承时的有关问题大家帮个小忙啊

发布时间: 2012-02-12 17:16:33 作者: rapoo

窗体继承时的问题,大家帮个小忙啊。
我做了一个子窗体基类。FormA

在这个FormA的FormDestroy事件中写了

Delphi(Pascal) code
FormA := nil;


上面明显是错误的。。


新建一个窗体FormB继承FormA,关闭FormB,结果执行的却是
Delphi(Pascal) code
FormA : nil;



请问基窗体的FormDestroy事件要怎么写?
写成
Delphi(Pascal) code
Self := nil;
吗?显然不行啊。。。。


[解决办法]
self.free
FreeAndNil(self) ?
[解决办法]
窗口跟组件一样,继承释构
[解决办法]
TMyClass = class(TObject)
destructor Destroy;override;
end;

var aa:TMyClass;
begin
aa:=TMyClass.Create;
....
FreeAndNil(aa);
end;

// 以上,不需要释放TObject,因为TObject被TMyClass继承。
// 分配的时候由aa涵盖,所以,我以为,基类不需要去释放(包括ivf 的窗体)
[解决办法]
什么都不用写!
[解决办法]
inherited
[解决办法]
析构函数自己会生成
[解决办法]
不用在销毁事件中写,即使写,也不要指定绝对的对象,比如FormA,那样所有子窗体都会去销毁FormA,对于模态窗体可以在Onclose事件中写Action:=caFree,
[解决办法]
一般用 Action:=Free就可以了

读书人网 >.NET

热点推荐