Form_InitializeでのUnload処理

解決


シン  2011-06-16 10:28:11  No: 102960  IP: [192.*.*.*]

Form_InitializeでのUnload処理は有効ではないのですか?
実際試してみると、Form_Unloadのイベントに入ってきません。
もし、Form_Initializeで終了させたい場合はEndを使用するしかないですか?

よろしくお願いします。

編集 削除
魔界の仮面弁士  2011-06-16 13:07:07  No: 102961  IP: [192.*.*.*]

> Form_InitializeでのUnload処理は有効ではないのですか?
そもそも Initialize の時点では、まだロードされていませんよね。
Initialize イベント中に意図的にロードした場合は別として。

「初期化されているがまだロードされていない」状態のオブジェクトを
Unload ステートメントにかけた場合は何も起きません。
Load 済みのオブジェクトのみが Unload 対象となります。


> 実際試してみると、Form_Unloadのイベントに入ってきません。
QueryUnload/Unload イベントが呼び出されるのは、
「Unload ステートメントが呼び出された時」
ではなく、
「実際にアンロード処理が実行された時」
ということです。


> Form_Initializeで終了させたい場合はEndを使用するしかないですか?
そもそもの作り方が間違っているように思えます。

「条件に応じて、Form の起動をキャンセルする」
という作りにしているのであれば、そうではなく、
「条件に応じて、Form を起動するかどうかを切り替える」
という制御にするのが自然かと。

どうしても Initialize イベント自体を中止したいのであれば、
Err.Raise ステートメントで任意のエラーを発生させることで、
初期化作業が止まります。呼び出し側に On Error 処理は必要ですが。

編集 削除
シン  2011-06-16 17:19:04  No: 102962  IP: [192.*.*.*]

魔界の仮面弁士さん

Form_Unloadはそういうことだったのですね。よくわかりました。

> 「条件に応じて、Form を起動するかどうかを切り替える」
いちおMainFormの処理で、Initial時に問題があればソフトを落とすということをしたかったので。
処理考え直します。

ありがとうございました。

編集 削除
シン  2011-06-16 20:55:08  No: 102963  IP: [192.*.*.*]

解決です。

編集 削除