读书人

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

发布时间: 2012-03-15 11:50:38 作者: rapoo

请问如何在设计期获取组件 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;

读书人网 >.NET

热点推荐