Parent和Owner


unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls; type TForm1 = class(TForm) btn2: TButton; pnl1: TPanel; procedure btn2Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.btn2Click(Sender: TObject); var Mybutton: TButton; begin with Mybutton do
  begin
    TButton.Create(Self);    //系统默认窗体上所有控件的所有者都是窗体。
    //TButton.Create(form1); //意义与Self一样。
    //TButton.Create(nil);  //不指出所有者
    Parent := pnl1; //Parent属性是指构件的包容器,构件只能在此范围内显示和移动
    Caption := 'Test';
    Left := 0;
    Top := 0;
  end;
end;

end.

 

Parent属性是指构件的包容器,构件只能在此范围内显示和移动。在窗体设计中,应注意构件的 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属性是运行阶段的属性,只能在运行阶段,通过代码设置。

//edit := tedit.Create(nil); //edit没有拥有者 
//edit := tedit.Create(self); //edit的拥有者是edit所在的form 
//edit := tedit.Create(application);//edit的拥有者是application, 
//edit := tedit.Create(form1); //edit的拥有者是form1,如果edit在form1上,和传递self是一样的

三、Clientheight和Height,Clientwidth和Width的区别:

  对于一般的构件而言,Height就是Clientheight,Width就是Clientwidth,而对于窗体而言,Height是包括标题条在内的高度,而Clientheight是指窗体工作区的高度。同理,Clientwidth是指定窗体工作区的宽度。

转载于:https://www.cnblogs.com/fanzhc/p/8036274.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值