用个例子来说明一下吧,假如有一个控件叫Control,他里面嵌套了一些子控件,子控件中还嵌套子控件。
var
  i:Integer;
begin
   //显示Owner=Control的控件的名称
   for i:=0 to Control.Componentcount -1 do
   begin
      ShowMessage(Control.Components[i].Name);
   end;
   //显示Parent=Control的控件的名称
   for i:=0 to Control.Controlcount -1 do
   begin
      ShowMessage(Control.Controls[i].Name);
   end;end;关于控件的释放关系可以看Delphi的帮助,很详细的

解决方案 »

  1.   

    No.1 类型不一样
      Parent: TWinControl;
      Owner: TComponent;No.2 含义不一样
      Parent: 父容器//是控件(TControl)所在的容器
      Owner: 拥有者//是元件(TComponent)的拥有者  Button1.Left := 1;
      Button1.Top := 3;
      Button1.Parent := Button2; //实现按钮上放按钮///////
      NewButton := TButton.Create(Button1); //Button1就是NewButton的Owner
      //当Button1执行Free时//NewButton也要执行Free
      

  2.   

    Owner是Delphi内部的对象管理链,是属于Delphi对象的内存管理
    Parent是Windows内部窗口管理链的机制
      

  3.   

    楼上的专业owner就是婚嫁关系
    parent就是生产继承关系
      

  4.   

    Owner是用来管理生存期的,Owner被释放时,该对象也会被释放.
    Parent是管理级别的,是其父窗口,即容器控件.Parent被隐藏时,该控件也被隐藏;Parent不可用时,该控件也不可用.
      

  5.   

    Parent是表示层次关系,如一个多层次的关系中,上一级的对象是下一级的Parent。Owner表示生存关系,Owner(拥有者)在被销毁时,会负责把被拥有者也销毁,以便释放内存。
      

  6.   

    Owner和Parent的区别:   Parent属性是指构件的包容器,构件只能在此范围内显示和移动。举例子如下: 
      (1)在Form1的窗体上,放一个Panel1,并将Panel1拉大, 
      (2)在Panel1上放一Button1; 
      (3)在Form1上放一Button2。 
      现在如果移动Panel1,则Button1随着Panel1移动,这是因为Button1的Parent是Panel1。现在将Button2移到Panel1上,再次移动Panel1,Button2并不跟着移动,这是因为Button2的Parent是Form1。除在窗体设计中,应注意构件的Parent是谁外,在动态创建构件时,也应指出构件的Parent,如在上例中继续操作: 
      1)Procedure Tform1.Button2click(Sender:Tobjet); 
      2)Var 
      3) Button:Tbutton; 
      4) Begin 
      5) Button:Tbutton.cerate(self); 
      6) Button.parent=panel1; 
      7) Button.lleft=0; 
      8) Button.top=0; 
      9) Button.caption:='OK'; 
      10) End; 
      当按Button2时,将在Panel1上创建一个Button,而如果把第6句改为Button.parent:=self;按Button2时,将在Form1上创建一个Button了。如果将第6句删除,按Button2时,什么都不会发生,这是因为创建方法无法知道应在哪里显示构件。 
      Owner属性是指构件的所有者,它负责构件的创建和释放。如在上例中,系统默认窗体上所有构件的所有者是窗体,而窗体的所有者是Application。顺便指出,create方法应带有表示构件所有者的参数,如在上例中,构件所有者是窗体,即self。 
      Parent属性和Owner属性是运行阶段的属性,只能在运行阶段,通过代码设置。   
    ================================================================CSDN 论坛助手 Ver 1.0 B0402提供下载。 改进了很多,功能完备!★  浏览帖子速度极快![建议系统使用ie5.5以上]。 ★  多种帖子实现界面。 
    ★  保存帖子到本地[html格式]★  监视您关注帖子的回复更新。
    ★  可以直接发贴、回复帖子★  采用XML接口,可以一次性显示4页帖子,同时支持自定义每次显示帖子数量。可以浏览历史记录! 
    ★  支持在线检测程序升级情况,可及时获得程序更新的信息。★★ 签名  ●  
         可以在您的每个帖子的后面自动加上一个自己设计的签名哟。Http://www.ChinaOK.net/csdn/csdn.zip
    Http://www.ChinaOK.net/csdn/csdn.rar
    Http://www.ChinaOK.net/csdn/csdn.exe
      

  7.   

    Owner和Parent的区别:   Parent属性是指构件的包容器,构件只能在此范围内显示和移动。举例子如下: 
      (1)在Form1的窗体上,放一个Panel1,并将Panel1拉大, 
      (2)在Panel1上放一Button1; 
      (3)在Form1上放一Button2。 
      现在如果移动Panel1,则Button1随着Panel1移动,这是因为Button1的Parent是Panel1。现在将Button2移到Panel1上,再次移动Panel1,Button2并不跟着移动,这是因为Button2的Parent是Form1。除在窗体设计中,应注意构件的Parent是谁外,在动态创建构件时,也应指出构件的Parent,如在上例中继续操作: 
      1)Procedure Tform1.Button2click(Sender:Tobjet); 
      2)Var 
      3) Button:Tbutton; 
      4) Begin 
      5) Button:Tbutton.cerate(self); 
      6) Button.parent=panel1; 
      7) Button.lleft=0; 
      8) Button.top=0; 
      9) Button.caption:='OK'; 
      10) End; 
      当按Button2时,将在Panel1上创建一个Button,而如果把第6句改为Button.parent:=self;按Button2时,将在Form1上创建一个Button了。如果将第6句删除,按Button2时,什么都不会发生,这是因为创建方法无法知道应在哪里显示构件。 
      Owner属性是指构件的所有者,它负责构件的创建和释放。如在上例中,系统默认窗体上所有构件的所有者是窗体,而窗体的所有者是Application。顺便指出,create方法应带有表示构件所有者的参数,如在上例中,构件所有者是窗体,即self。 
      Parent属性和Owner属性是运行阶段的属性,只能在运行阶段,通过代码设置。   
    ================================================================CSDN 论坛助手 Ver 1.0 B0402提供下载。 改进了很多,功能完备!★  浏览帖子速度极快![建议系统使用ie5.5以上]。 ★  多种帖子实现界面。 
    ★  保存帖子到本地[html格式]★  监视您关注帖子的回复更新。
    ★  可以直接发贴、回复帖子★  采用XML接口,可以一次性显示4页帖子,同时支持自定义每次显示帖子数量。可以浏览历史记录! 
    ★  支持在线检测程序升级情况,可及时获得程序更新的信息。★★ 签名  ●  
         可以在您的每个帖子的后面自动加上一个自己设计的签名哟。Http://www.ChinaOK.net/csdn/csdn.zip
    Http://www.ChinaOK.net/csdn/csdn.rar
    Http://www.ChinaOK.net/csdn/csdn.exe
      

  8.   

    个人认为:
      Owner负责控件的管理、创建和释放。
      Parent负责控件的绘制。