我想编写一个嵌入其他组件的复杂组件。但我不确定我是否能够通过对象检查器连接到这些组件。
为了澄清,想象一个包含TDataSources
列表的组件。这些DataSource组件归此组件所有,在表单上不可见。
现在我想将TDataset
连接到其中一个数据源,这是否可能,这些数据源是否会出现在数据集的属性编辑器组合中?
答案 0 :(得分:2)
有可能,但你必须输入(或复制)名称;你不能在OI中选择它。
使用下面写的组件,您可以输入例如MyComp1.InternalDataSource
到DBGrid的DataSource
属性中:
uses
Classes, DB;
type
TMyComp = Class(TComponent)
private
FDataSource: TDataSource;
public
constructor Create(AOwner: TComponent);override;
published
property DataSource: TDataSource read FDataSource;
end;
procedure Register;
implementation
procedure Register;
begin
RegisterComponents('TEST', [TMyComp]);
end;
{ TMyComp }
constructor TMyComp.Create(AOwner: TComponent);
begin
inherited Create(AOwner);
FDataSource := TDataSource.Create(Self);
FDataSource.Name := 'InternalDataSource';
end;