首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET >

请教怎么在设计期获取组件 parent

2012-03-15 
请问如何在设计期获取组件 parent?我设计了一个元件,想要在Create过程中指定自身Caption为parent元件的cla

请问如何在设计期获取组件 parent?
我设计了一个元件,想要在Create过程中指定自身   Caption   为   parent   元件的   classname。但是此元件放置在设计界面上的时候就会出错,好像   parent   属性不可读取。

现在想在这里请教众位前辈,Create   过程中能否访问   parent   属性?如果可以,如何访问;如果不可以,在设计期的   ComponentInspector上就可以看到Parent(只要公布此属性),这是如何做到的?


[解决办法]
一般继承自TControl的类都有parent属性
想在设计时看见这个属性的话,
可以将它的作用域定义为published

比如
type
TMyComponent = class(TForm)
published
Button1: TButton;
property Parent;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

当我们在设计时,从组件面板上拖放一个可视化控件时
IDE会自动帮你设置parent属性

在构造函数里最好不要访问parent属性,
因为有可能构造时IDE还没有指定parent
[解决办法]
首先在Create时,控件并没有设置Parent
只有实例创建后才可以设置Parent

换种思路,解决这个实际上比较简单
因为控件有专门的SetParent方法可以提供重载
参考如下代码:
type
Txxx = class(xxx)
protected
procedure SetParent(AParent: TWinControl); override;
end;
//...
procedure Txxx.SetParent(AParent: TWinControl);
begin
inherited;
if Assigned(AParent) then Caption := AParent.ClassName;
end;

热点排行