德尔福组件从新数据模块的组件面板中消失



我的组件的声明是:

MyComponentX = class(TActiveXComponent, IspdInterfaceX)

组件:

TActiveXComponent = class(TActiveXControl, IOleControl) 

当我在任何德尔福版本中打开一个新的数据模块时,该组件会从组件面板中消失。

我尝试更改Delphi XE2中的ClassGroup,但这不起作用。

数据模块只能承载非可视控件,TActiveXControl不是非可视控件。

你问非视觉控制的定义是什么。根据本文,定义是,如果组件派生自TComponent而不是派生自TControl,则它是一个非可视控件。

也就是说,TActiveXControl的继承层次结构是:TObjectTComObjectTTypedComObjectTAutoObjectTActiveXControl。所以我对为什么它会出现在您的组件面板上有些茫然,因为它不是从TComponent派生的。知道您如何注册它会很有趣。尽管如此,它不是行为意义上的非视觉成分。

在这种情况下,您可以创建一个类包装器以在此数据模块中使用 ActiveX。

TWrapper = class(TComponent)
private
    FYourActiveX: TYourActiveX;
public
    procedure Method;
end;
procedure TWrapper.Method;
begin
    FYourActiveX.Method;
end;

相关内容

  • 没有找到相关文章

最新更新