Openedイベントはフォームが開かれる場合に発生し、Closedイベントはフォームが閉じられた場合に発生します。また、QueryCloseイベントはClosedイベントが発生する直前に発生します。
ActiveXコントロールの場合、Openedイベントはアウトプレースアクティベートおよびインプレースアクティベートされた場合に発生し、Closedイベントはアウトプレースデアクティベートおよびインプレースデアクティベートされた場合に発生します。また、QueryCloseイベントは、アウトプレースアクティブ状態のフォームがアウトプレースデアクティベートされる場合にだけ発生します。
つまり、コンテナ上でインプレースアクティブ状態のActiveXコントロールに対して、Activateメソッドを呼び出すと、ActiveXコントロールはインプレースデアクティベートされ、アウトプレースアクティベートされるので、ClosedイベントおよびOpenedイベントが発生します。このとき、QueryCloseイベントは発生しません。
また、アウトプレースアクティブ状態のActiveXコントロールに対して、Deactivateメソッドを呼び出すと、ActiveXコントロールはアウトプレースデアクティベートされ、インプレースアクティベートされるので、QueryCloseイベント、ClosedイベントおよびOpenedイベントが発生します。
したがって、ActiveXコントロールのOpenedイベントに初期処理を記述したり、QueryCloseイベントやClosedイベントに終了処理を記述したりする場合には、それぞれのイベントが発生するタイミングを考慮する必要があります。
ActiveXコントロールの状態、操作および操作前後の状態でのActiveXコントロールに発生するイベントの関係を以下に示します。
状態 | 操作 | 操作前のActiveX | 操作後のActiveX | ||||
---|---|---|---|---|---|---|---|
OP | QC | CL | OP | QC | CL | ||
- | コンテナ起動 | (存在しない) | ○ | - | - | ||
インプレース | Activate | - | - | ○ | ○ | - | - |
Deactivate | (状態の変化なし) | ||||||
コンテナ終了 | - | - | ○ | (存在しない) | |||
アウトプレースアクティブ状態 | Activate | (状態の変化なし) | |||||
Deactivate | - | ○ | ○ | ○ | - | - | |
コンテナ終了 | - | - | ○ | (存在しない) |
○: イベントが発生する
-: イベントが発生しない
OP: Openedイベント
QC: QueryCloseイベント
CL: Closedイベント