Parent屬性是指構件的包容器,構件只能在此范圍內顯示和移動(dòng)。舉例子如下:
(1)在Form1的窗體上,放一個(gè)Panel1,并將Panel1拉大,
(2)在Panel1上放一Button1;
(3)在Form1上放一Button2。
現在如果移動(dòng)Panel1,則Button1隨著(zhù)Panel1移動(dòng),這是因為Button1的Parent是Panel1?,F在將Button2移到 Panel1上,再次移動(dòng)Panel1,Button2并不跟著(zhù)移動(dòng),這是因為Button2的Parent是Form1。除在窗體設計中,應注意構件的 Parent是誰(shuí)外,在動(dòng)態(tài)創(chuàng )建構件時(shí),也應指出構件的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時(shí),將在Panel1上創(chuàng )建一個(gè)Button,而如果把第6句改為Button.parent:=self;按Button2時(shí), 將在Form1上創(chuàng )建一個(gè)Button了。如果將第6句刪除,按Button2時(shí),什么都不會(huì )發(fā)生,這是因為創(chuàng )建方法無(wú)法知道應在哪里顯示構件。
Owner屬性是指構件的所有者,它負責構件的創(chuàng )建和釋放。如在上例中,系統默認窗體上所有構件的所有者是窗體,而窗體的所有者是Application。順便指出,create方法應帶有表示構件所有者的參數,如在上例中,構件所有者是窗體,即self。
Parent屬性和Owner屬性是運行階段的屬性,只能在運行階段,通過(guò)代碼設置。
Owner為創(chuàng )建者,Parent為容器 他們的類(lèi)型不同,
Owner為T(mén)Component(元件),Parent為T(mén)WinControl(窗體控件)