一Owner和Parent的区别
Parent属性是指构件的包容器构件只能在此范围内显示和移动举例子如下
()在Form的窗体上放一个Panel并将Panel拉大
()在Panel上放一Button
()在Form上放一Button
现在如果移动Panel则Button随着Panel移动这是因为Button的Parent是Panel现在将Button移到Panel上再次移动PanelButton并不跟着移动这是因为Button的Parent是Form除在窗体设计中应注意构件的Parent是谁外在动态创建构件时也应指出构件的Parent如在上例中继续操作
)Procedure TformButtonclick(Sender:Tobjet);
)Var
) Button:Tbutton;
) Begin
) Button:Tbuttoncerate(self);
) Buttonparent=panel;
) Buttonlleft=;
) Buttontop=;
) Buttoncaption:=;OK;;
) End
当按Button时将在Panel上创建一个Button而如果把第句改为Buttonparent:=self按Button时将在Form上创建一个Button了如果将第句删除按Button时什么都不会发生这是因为创建方法无法知道应在哪里显示构件
Owner属性是指构件的所有者它负责构件的创建和释放如在上例中系统默认窗体上所有构件的所有者是窗体而窗体的所有者是Application顺便指出create方法应带有表示构件所有者的参数如在上例中构件所有者是窗体即self
Parent属性和Owner属性是运行阶段的属性只能在运行阶段通过代码设置
二Self和Sender的区别
在事件处理程序参数表中至少含有一个参数Sender它代表触发事件处理程序的构件如在上例中Sender就指Button有了Sender参数可以使多个构件共用相同的事件处理程序如下例
Procedure TformButtonclick(Sender:Tobject);
Begin
If sender=button then
Labelcaption:=;看庭前花开花落 ;
Else Labelcaption:=;望天上云卷云舒;
End
在此例中ButtonButton共用了Buttonclick事件处理程序
Self是指所编的程序范围是在哪一个类中Delphi中大都在窗体范围内编程因此self即指窗体如果在编写一个类或是一个组件则self指该类或组件我们在函数或过程的声明中可看出self是代表哪个组件即self代表号之前的组件如在第一个例子中self代表Tform另外应注意self只能用在类方法中而不能用在过程或函数中如下例用法是错的:
Function a(B:Integer):Integer;
Begin
……
Button:=tbuttoncreate(self)……
End
三Clientheight和HeightClientwidth和Width的区别
对于一般的构件而言Height就是ClientheightWidth就是Clientwidth而对于窗体而言Height是包括标题条在内的高度而Clientheight是指窗体工作区的高度同理Clientwidth是指定窗体工作区的宽度
从上面陈述可知理解Ower和ParentSelf和SenderClientheight和HeightClientwidth和Width区别对于Delphi中正确编程是重要的