[アクティブ フォーム ウィザード]または[ActiveX コントロール ウィザード]
[ファイル]メニュー への移動
ファイル > 新規作成 > その他... > <パーソナリティ> > ActiveX > アクティブ フォーム
ファイル > 新規作成 > その他... > <パーソナリティ> > ActiveX > アクティブ コントロール
- [アクティブ フォーム ウィザード]は、ActiveX ライブラリ プロジェクトにアクティブ フォームを追加するために使用します。
- [ActiveX コントロール ウィザード]は、指定の VCL コントロールから ActiveX コントロールを作成するために使用します。 VCL コントロールのプロパティ、メソッド、およびイベントは、ウィザードが作成する ActiveX コントロールのプロパティ、メソッド、およびイベントになります。
メモ: [アクティブ フォーム]または[ActiveX コントロール]を作成できるようにするには、はじめに[ActiveX ライブラリ]を作成する必要があります。 アクティブ フォーム および ActiveX コントロール の各ウィザードは、ActiveX ライブラリが作成されるまでは、新規項目のリストで有効になりません(ActiveX ライブラリ を作成すると、動的 リンク ライブラリ [DLL] プロジェクトが作成され、これが、プロセス内の ActiveX オブジェクトのホストとなります)。 手順については、「COM ウィザードを使用する」を参照してください。
項目 | 説明 |
---|---|
CoClass 名 |
実装するコントロールの名前を指定します。 これは、タイプ ライブラリに表示される CoClass 名です。 生成された実装クラスは、これと同じ名前で先頭に 'T' が付きます。 |
説明 |
作成中のコンポーネントについての任意の説明を入力します。 |
(詳細は下記セクション参照) |
スレッド モデルを選択して、COM がアクティブ フォームや ActiveX コントロールのインターフェイス呼び出しをシリアル化する方法を示します。 選択したスレッド モデルによって、コントロールの登録方法が決まります。 実装は、必ず、選択したモデルに従って行う必要があります。ウィザードは常に、スレッド モデルとして[アパートメント スレッド モデル]を指定します。 ActiveX プロジェクトに含まれるコントロールが 1 つしかない場合には、これで問題ありません。 しかし、プロジェクトにさらにコントロールを追加する場合は、スレッド サポートを行う必要があります。 |
コンポーネント名 |
作成している ActiveX コントロールの祖先として使用する VCL コンポーネントをドロップダウン リストから選択します。 アクティブ フォームの場合、コンポーネントは常に TActiveForm です。 |
インターフェイス |
コントロールのデフォルト インターフェイスの名前を示します。 デフォルトでは、コントロールのインターフェイスは CoClass と同じ名前で先頭に 'I' が付きます。 |
バージョン情報を追加 |
著作権やファイルの説明など、バージョンの説明をコントロールに含めることができます。 この情報は、ブラウザで表示することができます。 Visual Basic 4.0 など、ホスト クライアントによってはバージョン情報を必要とするものがあり、それがないとコントロールをホストしません。 バージョン情報は、[プロジェクト|オプション...] を選択し、バージョン情報 ページを選択することによって指定できます。 |
スレッド モデル
ActiveX コントロールは、次のスレッド モデルを使用できます。
モデル | 説明 |
---|---|
シングル |
一度にサービスできるクライアント スレッドは 1 つだけです。 COM はすべての受信呼び出しをシリアル化します。 コードでスレッド サポートする必要はありません。 |
アパートメント |
クライアントによってインスタンス化された各コントロールには、一度に 1 つのスレッドからアクセスします。 複数のスレッドからグローバル メモリにアクセスすることがないようにする必要がありますが、オブジェクトはそれ自身のインスタンス データ(オブジェクト プロパティおよびメンバ)には安全にアクセスできます。 |
フリー |
各コントロール インスタンスは、複数のスレッドから同時に呼び出される場合があります。 グローバル メモリ同様、インスタンス データも保護する必要があります。 |
フリー/アパートメント両用 |
これは、[使用可能]スレッド モデルと同じですが、クライアントが供給するコールバックはすべて、同じスレッドでの実行が保証されている点が異なります。 つまり、パラメータとしてコールバック関数に提供した値を保護する必要はありません。 |
ニュートラル |
複数のクライアントから、コントロールを異なるスレッドで、同時に呼び出すことができますが、COM は 2 つの呼び出しが衝突しないことを保証します。 グローバル データや複数のメソッドがアクセスするインスタンス データにかかわるスレッドの衝突から保護する必要があります。 このモデルはユーザー インターフェイスを持つオブジェクトでは使用しないでください。 このモデルは COM+ でのみ使用できます。 COM の場合は、[アパートメント スレッド モデル]にマップされます。 |