我的组件的声明是:
MyComponentX = class(TActiveXComponent, IspdInterfaceX)
TActivex组件:
TActiveXComponent = class(TActiveXControl, IOleControl)
当我在任何 Delphi 版本中打开一个新的 DataModule 时,该组件将从组件面板中消失。
我尝试更改 Delphi XE2 中的 ClassGroup,但这不起作用。
我的组件的声明是:
MyComponentX = class(TActiveXComponent, IspdInterfaceX)
TActivex组件:
TActiveXComponent = class(TActiveXControl, IOleControl)
当我在任何 Delphi 版本中打开一个新的 DataModule 时,该组件将从组件面板中消失。
我尝试更改 Delphi XE2 中的 ClassGroup,但这不起作用。
数据模块只能承载非可视控件,TActiveXControl
而不是非可视控件。
你问非视觉控制的定义是什么。根据这篇文章的定义是,如果组件是派生自TComponent
而不是派生自的TControl
,那么它就是一个非可视化控件。
也就是说,继承层次结构TActiveXControl
是:TObject
, TComObject
, TTypedComObject
, TAutoObject
, TActiveXControl
. 所以我不知道为什么它会出现在你的组件面板上,因为它不是从TComponent
. 知道您如何注册它会很有趣。尽管如此,它并不是行为意义中的非视觉成分。
在这种情况下,您可以创建一个类包装器以在此数据模块中使用您的 ActiveX。
TWrapper = class(TComponent)
private
FYourActiveX: TYourActiveX;
public
procedure Method;
end;
procedure TWrapper.Method;
begin
FYourActiveX.Method;
end;