• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

这就是Delphi,稀里又糊涂:constructor create(AOwner:Tcomponent);override;(33分) ...

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

Constructor TcountButton.create(AOwner:Tcomponent);
begin
inherited create(Aowner);
inc(TotBtns);
end;
请解释一下这里Aowner的用法

 

AOwner指明这个控件的拥有者. 在AOwner释放时会自动释放自己

 

to Another_eYes:
有些控件有Create(AOwner)和CreateParent,有什么区别呢?

 

To Another_eYes too
既然有了AOwner,它释放时可自动释放刚才动态创建的组件--即以它为AOwner的构件,
那为什么很多人还说动态建的组件在用完后要还要释放呢?

 

那是因为很多人都盲从,会抄书。而Another_eYes是理解透了。
如果连Delphi中TComponent组件的思想到现在还没有理解,不知道你们学Delphi怎么学的!

 

来自:z_cd 时间:00-9-6 10:54:43 ID:328576 
记住一规律:
1. TComponent 子类的 Create 方法都带 Owner 参数,一般都用 Self(窗体) 做参数,
该情况下 TComponent.Create(Owner) 的对象,在 Owner 销毁时将自动被 Owner 
销毁(你可以看 TComponent 的 Destroy 方法实现源代码)。
2. TObject 继承下来的其他类,你看它们大部分 Create 方法都不带参数,它们也没有
象 TComponent 一样的隶属管理机制。因此这样的类对象你创建后需要手工 Free。


来自:Another_eYes 时间:00-9-7 23:39:44 ID:330363 
千万别在Destroy里释放用Create(AOwner)建立起来的控件(Delphi会自动释放, 而且 
你不知道在你的Destroy被Delphi调用时该控件是否已经被Delphi释放掉了, 除非你
override了Notification方法, 只有在那里面才能得知哪些控件会在调用你的Destroy前
就被释放掉了).


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
Delphi文字跑马灯发布时间:2022-07-18
下一篇:
Delphi与DirectX之DelphiX(38):TDIB.Filter();发布时间:2022-07-18
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap