Delphi中Owner和Parent的区别
在 英语中,Owner 的语义是“物主,所有人”,Parent 的语义是“父亲(或母亲)”等的意思。
而在 delphi 语言里,这两个单词所代表的含义之英文原意相仿。两者的区别在于:
1、Owner 指构件的 “所有者”,它负责构件的创建和释放。
Parent 指构件的包容器(构件的上一层构件:“父母”),构件只能在此范围内显示和移动。
2、与 Owner 关联的对象是 TComponent(元件),而与 Parent 关联的是TControl(控件)。
举例说明:
在窗体 (TForm1) 上放置1个 Panel,并在 Panel 中再添加 Label、Edit 和 Button ,然后运行代码检测各控件的 Owner 和 Parent 值:
procedure?TForm1.Button1Click(Sender:?TObject);var
i:?Integer;
begin
for?i?:=?0?to?ComponentCount-1?do
begin
Memo1.Lines.Add('控件名称:'?+?Components[i].Name);
Memo1.Lines.Add('控件的?Owener:'?+?Components[i].Owner.Name);
if?Components[i]?is?TControl?then?//只有控件才有?Parent
begin
Memo1.Lines.Add('控件的?Parent:'?+?TControl(Components[i]).Parent.Name);
end;
Memo1.Lines.Add('');
end;
end;
代码运行结果:
从结果可以看出,所有的控件,其 Owner 值都是 Form1(窗体), 而只有上步“Panel 中再添加 Label、Edit 和 Button ”的三个控件,其 Parent 才是 Form1。