ページの先頭行へ戻る
NetCOBOL V12.2 PowerCOBOL ユーザーズガイド
FUJITSU Software

9.3.5 Activateメソッドの役割

このサンプルプログラムで使用したように、ActivateメソッドはPowerCOBOLで作成したActiveXコントロールを別画面として開く場合に利用します。

このように、ActiveXコントロールを別画面として表示することを、COMの用語でアウトプレースアクティベートと呼び、その状態をアウトプレースアクティブ状態と呼びます。また、別画面として表示しないで、コンテナ(フォーム)上に表示することをインプレースアクティベートと呼び、その状態をインプレースアクティブ状態と呼びます。

逆に、Deactivateメソッドは、別画面として開いているActiveXコントロールを閉じる場合に利用します。

このように、Deactivateメソッドにより、アウトプレースアクティベート状態を終了することを、COMの用語でアウトプレースデアクティベートと呼びます。また、インプレースアクティベート状態のActiveXコントロールがアウトプレースアクティベートによりインプレースアクティベート状態でなくなることを、インプレースデアクティベートと呼びます。

つまり、このサンプルプログラムでの動作は、ActiveXコントロールの動作および状態と以下のように対応しています。

  1. アプリケーションを起動する。
    →コンテナ上にインプレースアクティベートされ、インプレースアクティブ状態になります。

  2. [別画面で開く]ボタンをクリックする。
    →コンテナ上のActiveXコントロールはインプレースデアクティベートされ、かつ、アウトプレースアクティベートされて、アウトプレースアクティブ状態になります。

  3. [別画面を閉じる]ボタンをクリックする。
    →ActiveXコントロールはアウトプレースデアクティベートされ、かつ、インプレースアクティベートされて、インプレースアクティブ状態になります。

PowerCOBOLでは、ActiveXコントロールは、つねにインプレースアクティブ状態またはアウトプレースアクティブ状態になっています。ActiveXコントロールの状態と呼び出したメソッドに対応するActiveXコントロールの動作を、以下に示します。

ActiveXコントロールの状態

Activateメソッド

Deactivateメソッド(*1)

インプレース
アクティブ状態

インプレースデアクティベートされ、アウトプレースアクティベートされる。

何も起きない。

アウトプレース
アクティブ状態

フォーカスが与えられ、最前面に表示される。(*2)

アウトプレースデアクティベートされ、インプレースアクティベートされる。

(*1)CloseFormメソッドを呼び出した場合および[閉じる]ボタンをクリックした場合も同様です。

(*2)他のウィンドウの状態により、最前面に表示されない場合もあります。