如何公开以activex形式创建的组件的属性
你可以发布一个activex表单内的控件的属性?
例如我有一个带有TAdoconnection组件的窗体,我希望用户在加载我的ActiveX控件时可以修改此组件的属性。
替代文字http://i46.tinypic.com/2hd1xr4.png
UPDATE
@TOndrej给了我一个很好的示例,但是这个示例仅适用于从ActiveX控件派生的组件,如何使用像Timage或TMemo这样的VCL组件完成相同的效果? 是否可以发布所有属性而不重写每个属性以手动公开?
ADO组件已经是ActiveX对象,所以最简单的方法是将连接公开为ActiveX表单的简单属性:
在类型库编辑器中,将“Microsoft ActiveX Data Objects 2.1库”添加到使用库的列表中。 这将在您的项目目录中生成ADODB_TLB.pas
单元。
替代文字http://i46.tinypic.com/2itfprm.png
然后,您可以在IActiveFormX
接口中声明一个新的只读属性Connection
的Connection
(此类型在ADODB_TLB
单元中声明)。
替代文字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”。
上一篇: How expose the properties of an component created in an activex form