如何公开以activex形式创建的组件的属性

时间:2010-05-27 07:01:35

标签: delphi activex

您可以发布activex表单内的控件的属性吗?

示例我有一个带有TAdoconnection组件的表单,我希望用户在加载我的activex控件时可以修改该组件的属性。

alt text http://i46.tinypic.com/2hd1xr4.png

更新

@TOndrej给了我一个非常好的样本,但是这个样本仅适用于从activex控件派生的组件,如何使用像Timage或TMemo这样的VCL组件实现同样的效果?是否可以发布所有属性而不重写每个属性以手动公开?

1 个答案:

答案 0 :(得分:3)

ADO组件已经是ActiveX对象,因此最简单的方法是将连接公开为ActiveX表单的简单属性:

在类型库编辑器中,将“Microsoft ActiveX Data Objects 2.1 Library”添加到已使用库的列表中。这将在项目目录中生成ADODB_TLB.pas单元。

alt text http://i46.tinypic.com/2itfprm.png

然后,您可以在Connection界面中声明类型为Connection的新只读属性ADODB_TLB(此类型在IActiveFormX单元中声明)。

alt text http://i47.tinypic.com/2a5atf9.png

在实现中,您只需从TADOConnection组件返回界面:

type
  THackADOConnection = class(TADOConnection);

function TActiveFormX.Get_Connection: Connection;
begin
  Result := Connection(THackADOConnection(ADOConnection).ConnectionObject);
end;

THackADOConnection类型转换只是必需的,因为ConnectionObject受到保护。外部Connection类型转换是为了摆脱编译器错误“不兼容的类型:ADODB_TLB._Connection和ADOInt._Connection。”