是否可以将属性连接到嵌入式组件

时间:2012-11-05 22:24:47

标签: delphi ide components embed design-time

我想编写一个嵌入其他组件的复杂组件。但我不确定我是否能够通过对象检查器连接到这些组件。

为了澄清,想象一个包含TDataSources列表的组件。这些DataSource组件归此组件所有,在表单上不可见。

现在我想将TDataset连接到其中一个数据源,这是否可能,这些数据源是否会出现在数据集的属性编辑器组合中?

1 个答案:

答案 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;