Controls与Components的区别

见例子 http://www.cnblogs.com/del/archive/2008/10/23/1317862.html

o_810231.png

begin
Memo1.Clear;

Memo1.Lines.Add('窗体所属的 Components:');
for i := 0 to Self.ComponentCount - 1 do
    Memo1.Lines.Add(Components[i].Name);

Memo1.Lines.Add('');
Memo1.Lines.Add('窗体所属的 Controls:');
for i := 0 to Self.ControlCount - 1 do
    Memo1.Lines.Add(Controls[i].Name);
end;

----------------------------------------------------------------------------------------------------------------------------

TControl是所有可视控件的父类。而TComponent也包括非可视控件。   --?

一个容器控件如果被其他控件指定为属主(Owner), 那么它的 Components 集合就会增加一个元素;
一个容器控件如果被其他控件指定为 Parent, 那么它的 Controls 集合就会增加一个元素;

控件释放时空同时释放 Components 集合中的元素;
控件 Controls 集合中的控件都会显示在它的怀抱中, 并且 Left、Top 等属性也都是参照它.
    
some题外话:

一般来说,所有在设计状态下添加的控件(无论可视或者非可视)的Owner都是Form。而且当一个Control的Owner不是Form时,它将不能在设计状态下被选定并进行编辑。而其相关属性也不会保存到DFM文件中。

控件被放置于GroupBox当中,其实只是控件的Parent属性为GroupBox,而GroupBox的ComponentCount仍然为0,反倒是Form.Components包含了所有控件,即这个控件的Owner还是Form。

控件会添加到其Parent属性所指控件Controls数组,Owner属性所指的Components数组。默认情况下设计期添加的控件其Parent属性就是其容器控件,而Owner为其所属Form。

如:在form1中放groupbox,在groupbox1中放label1,则label1的parent属性为groupbox1,owner属性为form1

转载于:https://www.cnblogs.com/phyking/p/4456601.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值