VCL里有“包含”与“拥有”组件两种说法,有什么不一样?使用上有什么区别?

解决方案 »

  1.   

    owner指定组件的宿主,若A的宿主为B,则当B的内存释放,A的内存也释放。通常窗体拥有放在其上的所有组件。
    pare nt为包含组件的父窗口组件,用于充当子组件的容器。在运行期可以动态指定。通常组件的parent为Tform,Tradiogroup,tgroupbox和tpanel等
      

  2.   

    “包含”是指这个控件放在某个容器上面,parent属性。
    “拥有”是指这个控件的生存期跟某个控件一样,owner属性。
      

  3.   

    A被B包含的时候,B被销毁了,A不会
    A被B拥有的时候,B被销毁之前,A已经销毁了,不用自己去销毁,但是有时候会有问题,所以就有出现A:=TA.Create(Nil),就是设定A的owner是Nil。你可以Ctrl+Click owner和parent。。
      

  4.   

    1、
        parent属性,父窗口组件是包含其它组件的容器
        owner属性,父窗口组件是其它组件的宿主
      

  5.   

    parent指向的组件必须是一个容器.
    而owner是组件的管理能力,它在TComponent里就已经做了实现.