Delphi组件从新数据模块中的Component Palette中消失

时间:2014-03-05 17:44:56

标签: delphi activex datamodule

我的组件声明是:

MyComponentX = class(TActiveXComponent, IspdInterfaceX)

TActivexComponent:

TActiveXComponent = class(TActiveXControl, IOleControl) 

当我在任何Delphi版本中打开一个新的DataModule时,该组件将从Component Palette中消失。

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

2 个答案:

答案 0 :(得分:2)

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

你问非视觉控制的定义是什么。根据{{​​3}},定义是如果组件派生自TComponent而非派生自TControl,则它是非可视控件。

也就是说,TActiveXControl的继承层次结构是:TObjectTComObjectTTypedComObjectTAutoObjectTActiveXControl。因此,我不知道它出现在组件面板上,因为它不是从TComponent派生出来的。了解你的注册方式会很有趣。尽管如此,它并不是行为意义上的非视觉成分。

答案 1 :(得分:0)

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

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

procedure TWrapper.Method;
begin
    FYourActiveX.Method;
end;