VCL フォームに ActiveX アクティブ フォームを作成する

提供: RAD Studio
移動先: 案内検索

VCL フォーム アプリケーションの作成方法 への移動


Delphi コントロールと同様に、ActiveX コントロールのコンポーネントを IDE でフォームなどの論理コンテナに配置すると、プログラム コードが生成されます。 ActiveX コントロールと Delphi コントロールの主な相違は、ActiveX コントロールは言語に依存しないことです。 たとえば、ActiveX コントロールを作成して、Delphi や %C++Builder% だけでなく、Windows 上のさまざまなプログラミング環境に配置することができます。

この手順では、ActiveX アクティブ フォーム ウィザードを使用して、2 つのコンポーネントを含むアクティブ フォームを作成します。 このウィザードは、VCL フォームを使用してアクティブ フォームを作成します。 アクティブ フォームをテストするには、単純な HTML ファイルと Web ブラウザを使ってフォームを開きます。 主な手順は次のとおりです。

  1. ActiveX ライブラリ プロジェクトと ActiveX アクティブ フォームを作成します。
  2. ボタンとイベント処理コードを追加します。
  3. アクティブ フォームをテストします。

ActiveX ライブラリ プロジェクトと ActiveX アクティブ フォームを作成するには:

  1. ローカル ドライブに ActiveX プロジェクトのディレクトリを作成します。 そのディレクトリに簡単に見つけられる名前を付けます(たとえば、ActiveX)。
  2. 次のいずれかを選択します。
    これにより、インプロセス ActiveX オブジェクトのホストとして使用できる DLL(ダイナミック リンク ライブラリ)プロジェクトが作成されます。
  3. 次のいずれかを選択します。
    Active フォーム ウィザードが開かれます。
  4. デフォルト設定のままで[OK]をクリックします。 ウィザードにより、ActiveX コントロールの実装に必要なコードが生成され、プロジェクトに追加されます。 ActiveX アクティブ フォームが表示されます。

アクティブ フォームにボタンとイベントを追加するには:

  1. [ツール パレット][Standard]ページから、[TEdit]コンポーネントと[TButton]コンポーネントをフォームに追加します。
  2. ボタンを選択します。
  3. [オブジェクト インスペクタ][イベント]タブで、[OnClick]イベントをダブルクリックします。 コード エディタが表示され、次のいずれかのイベント ハンドラ ブロックにカーソルがあります:
    • TActiveFormX.Button1Click (Delphi)
    • TActiveFormX::Button1Click() (C++)
  4. カーソルの位置に次のコードを入力します。
    • Delphi:
 ShowMessage(Edit1.Text);
  • C++:
 ShowMessage(Edit1->Text);
  1. プロジェクト ファイルを ActiveX ディレクトリに保存します。



アクティブ フォームをテストするには:

アクティブ フォームを作成し、ビルドして登録したら、次のような単純な HTML ファイルを使って Web ブラウザ上で動作させることができます。


<html>
<body>
<h1>Active Form<h1>
<object
       classid="clsid:3E46CAEF-520F-4B9F-B152-00FF2E006F88"
       codebase="AnActiveForm.ocx"
       width=700
       height=250
       align=center
       hspace=0
       vspace=0>
</object>
</body>
</html> 

この HTML で、次の 2 つの項目については値を変更する必要があります。

  • classid(アクティブ フォームの CoClass の GUID)
  • codebase(アクティブ フォームを含むアクティブ ライブラリの名前。拡張子は .ocx または .dll)
  1. <project>_TLB ユニットで、classid(実際の GUID 値)を探します。 上の例のコードは以下のようになっています。


    // *********************************************************************//
    // GUIDS declared in the TypeLibrary. Following prefixes are used:        
    //   Type Libraries     : LIBID_xxxx                                      
    //   CoClasses          : CLASS_xxxx                                      
    //   DISPInterfaces     : DIID_xxxx                                       
    //   Non-DISP interfaces: IID_xxxx                                        
    // *********************************************************************//
    const
      CLASS_TestActiveForm: TGUID = '{3E46CAEF-520F-4B9F-B152-00FF2E006F88}';
    

    つまり、この例の classid3E46CAEF-520F-4B9F-B152-00FF2E006F88 です。

  2. ファクトリの登録コードを見て、正しい codebase の値を探します。 codebase は、ファクトリのコンストラクタに渡される 4 番目のパラメータで、"Class_" という接頭辞が付いています。


    initialization
      TActiveFormFactory.Create(
        ComServer,
        TActiveFormControl,
        TTestActiveForm,
        Class_TestActiveForm,
        1,
        ,
        OLEMISC_SIMPLEFRAME or OLEMISC_ACTSLIKELABEL,
    {$IFDEF SINGLE_THREADED}
        tmSingle);
    {$ELSE}    
        tmApartment);
    {$ENDIF} 
    

    つまり、ここでの codebaseTestActiveForm です。

  3. HTML ファイルを編集して、codebase および classid に固有の値を指定します。 ファイルを保存します。

  4. Internet Explorer などの Web ブラウザで HTML ファイルを開きます。

    ブラウザのウィンドウにアクティブ フォームが表示されます。

  5. ボタンをクリックします。 ポップアップ ダイアログに編集ボックスのテキストが表示されます。

  6. テキストを変更して、もう一度ボタンをクリックします。 入力した新しいテキストがポップアップ ダイアログに表示されます。

関連項目