parent , self(20分)

  • 主题发起人 主题发起人 leo_aj
  • 开始时间 开始时间
L

leo_aj

Unregistered / Unconfirmed
GUEST, unregistred user!
请问 self and parent的 作 用 ,例 如

NewCtrl := ClassRef.Create (Self);
NewCtrl.Parent := Self;
self and parent 指 的 是 什 么 ?
 
self用来负责构件的创建、释放等。
而parent只是确定可视构件的显示位置的,即该构件在form上还是在panel上显示
(假设一个窗体上有个panel)若要在form上显示则
NewCtrl.Parent:= Form1;
同理,要在panel上显示则:
NewCtrl.Paren:= Panel1;

这个问题以前已经有问过的了,检索一下。
 
self一般为当前的form
这里是form1
 
最好能再说得详细些!这也是我模糊的概念!?
还有AOwner的作用
 
parent 是控件的父窗体,self可能是控件自身吧!看帮助吧:)
 
对于下面的程序
NewCtrl := ClassRef.Create (Self);
NewCtrl.Parent := Self;
要区分两个参数:Aowner 、Parent.
parent 确定可视构件的显示位置的(控件之间的隶属关系)
Aowner 确定此控件是由谁来分配资源的
Self 指当前对象(一般是主窗体)
 
NewCtrl := ClassRef.Create (Self);
NewCtrl.Parent := Self;
要知道这里的Self是什么,需要看这两句是在什么函数或者过程中,
一般是:
procedure TOneClass.OneProcedure;
begin
...
NewCtrl := ClassRef.Create (Self);
NewCtrl.Parent := Self;
...
end;
那么,Self就是指TOneClass。

根据李维的书中介绍,Owner一般是指窗体,Parent是与显示时的位置有关,
例如一个Button放在Panel上,Parent是Panel,但Owner还是Panel所在的窗
体。

 
self 是当前的对象,如
procedure form1.Button1Click(Owner:Tobject);
begin
self.caption := '欢迎';
end;
中的self 指form1

parent是对象的父亲指针。
 
在procedure form1.Button1Click(Owner:Tobject)
中 self是form1.
procedure form2.Button1Click(Owner:Tobject)中
self是form2
parent 是指盛放该控件的控件,一般是form 或panel
 
前面几位已把意思说清楚了,我再闲谈几句:
对于下面的语句
1、NewCtrl := ClassRef.Create (Self);
表示NewCtrl 是一个以 ClassRef 类为饼干模子,做一个新饼干,
这个饼干的所有者(Ower)是 Self。
这个饼干由所有者维护,当它的所有者消亡时,饼干也就没了(正所谓皮之不存,毛将焉附)

2、NewCtrl.Parent := Self;
表示NewCtrl这个饼干现在放在Parent(此为Self)这个盘子上,显示出来给人看。
当这个盘子被打碎时,饼干并不会消亡,只是你暂时看不到而已。
 
thank you indeed, guys!
 
后退
顶部