如果是控件对象,并设置了parent属性,那不用释放,因为它的parent释放时也会将它释放。其它的当然要手动释放

解决方案 »

  1.   

    楼上的那位说错了(Crib)。一个组件会释放他拥有的组件。
    拥有者是有Owner 指定的,不是parent。父子关系和拥有关系是不同的,组件可以是其他组件的父,但只有窗口组件才能成为
    其它组件的父。组件的父是右parent属性指定的。
      一个组件的父不一定是这个组件的拥有者。
      

  2.   

    to yibin对于一切可视构件,它一定有自己的parent,而所有的构件都有着直接或间接的Owner。比如窗体上有一个TPanel,这个TPanel的Owner是TForm,而在TPanel中又有一个TButton,那么TButton会随着TPanel的释放而释放。这个我做过试验,对于任何一个可视构件,如果动态生成并设置parent后,只要最高层的构件被释放,它所Owner的所有控件都将被自动释放,再人工释放里面的子控件一定会出异常。所以我认我我没有错~~~~~~~~~另外,你把我的名字打错了。再另外,如果还有疑问可以mailto:[email protected]。我给你看例子
      

  3.   

    Owner是宿主,Parent只是简单的父,Owner可能是parent也可能不是,但比parent层次高
      

  4.   

    microsoft认为一切都是window,比如:button,edit,lable等等
      

  5.   

    我想设置了parent的一引起控件间,对Owner似乎应该也有一种继承关系
      

  6.   

    动态创建组件时create的参数即owner
      

  7.   

    >我想设置了parent的一引起控件间,对Owner似乎应该也有一种继承关系 
    看不懂
      

  8.   

    "我想设置了parent的一组控件间,对Owner似乎应该也有一种继承关系"那如果是Create(nil)后,再设置了Parent的控件呢?这样的控件的Owner又是什么?不会没有吧?
      

  9.   

    是的,没有!需要你自己free.
    我的理解,parent只与可视组件有关系。比如,设置了parent,又设置了parentfont那么
    它就会与其parent具有相同的字体。
      

  10.   

    我已经说过了, 动态创建组件时create的参数即owner 
      

  11.   

    有的需要你FREE的,有的不要, 比如INIFILE就要FREE,有的不要,比如PICTURE
      

  12.   

    简单来说,TComponent派生出来的类都不用特意free。TComponent free的时候,会自动把所有的子Component都free掉,如果是其它情况,最好就写代码把占用的内存free掉。
      

  13.   

    讨论总的原则,我觉得要多花些时间了解VCL机制才能弄清楚,不能轻易下结论。