0

私のコンポーネントの宣言は次のとおりです。

MyComponentX = class(TActiveXComponent, IspdInterfaceX)

TActivexComponent:

TActiveXComponent = class(TActiveXControl, IOleControl) 

どの Delphi バージョンでも新しい DataModule を開くと、コンポーネントがコンポーネント パレットから消えます。

Delphi XE2 で ClassGroup を変更しようとしましたが、うまくいきません。

4

2 に答える 2

2

データ モジュールは非ビジュアル コントロールのみをホストでき、非ビジュアル コントロールでTActiveXControlはありません。

あなたは非視覚的コントロールの定義は何かと尋ねます。この記事によると、定義は、コンポーネントがから派生し、から派生しTComponentていない場合TControl、それは非視覚的コントロールであるということです。

つまり、 の継承階層TActiveXControlTObjectTComObjectTTypedComObjectTAutoObjectですTActiveXControl。から派生したものではないため、なぜコンポーネントパレットに表示されるのか、私は途方に暮れていますTComponent。どのように登録したのか、興味深いところです。それでも、それは行為の意味における非視覚的要素ではありません。

于 2014-03-05T17:48:58.703 に答える
0

この場合、クラス ラッパーを作成して、このデータ モジュールで ActiveX を使用できます。

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

procedure TWrapper.Method;
begin
    FYourActiveX.Method;
end;
于 2014-03-05T18:21:46.183 に答える