zoukankan      html  css  js  c++  java
  • 这就是Delphi,稀里又糊涂:constructor create(AOwner:Tcomponent);override;(33分)

    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前
    就被释放掉了).

    好的代码像粥一样,都是用时间熬出来的
  • 相关阅读:
    C#多线程编程之:集合类中Synchronized方法与SyncRoot属性原理分析
    Newtonsoft.Json 序列化和反序列化 以及时间格式 2 高级使用
    C++:基类和派生类
    C++:友元(非成员友元函数、成员友元函数、友元类)
    C++:静态成员
    C++:向函数传递对象(对象、对象指针、对象引用)
    C++:常类型Const
    C++:对象的赋值和复制
    C++:类的组合
    C++:析构函数
  • 原文地址:https://www.cnblogs.com/jijm123/p/14892359.html
Copyright © 2011-2022 走看看