我的组件的声明是:
MyComponentX = class(TActiveXComponent, IspdInterfaceX)
组件:
TActiveXComponent = class(TActiveXControl, IOleControl)
当我在任何德尔福版本中打开一个新的数据模块时,该组件会从组件面板中消失。
我尝试更改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;