您可以发布activex表单内的控件的属性吗?
示例我有一个带有TAdoconnection组件的表单,我希望用户在加载我的activex控件时可以修改该组件的属性。
alt text http://i46.tinypic.com/2hd1xr4.png
@TOndrej给了我一个非常好的样本,但是这个样本仅适用于从activex控件派生的组件,如何使用像Timage或TMemo这样的VCL组件实现同样的效果?是否可以发布所有属性而不重写每个属性以手动公开?
答案 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。”