プロが教えるわが家の防犯対策術!

VB6.0(SP5)を使用しています。OSはXp Proです。
自作アプリのEXEでの動作で困っています。ENDステートメントが正常に機能しません。

MDIフォームで、メインフォームのLoad中、何らかのエラー(DLLの初期化失敗など)が発生した場合に、ENDステートメントでアプリケーションを終了させています。
VBでデバッグさせている状態だと問題無く終了します。
しかし、コンパイル後のEXEで動作させると必ずメインMDIフォームを表示(起動?)します。
この時に起動されるメインMDIフォームは、各種メニュー等は起動不可で、右上×印の終了ボタンのみ機能します。

ToolBarコントロールを使用しているか否かで、症状が変わります。
(1)MDIフォームにToolBarコントロールを組み込んだ状態
 上記、MDIフォームが表示される現象が発生します。
(2)MDIフォームにToolBarコントロールを組み込んでいない状態
 正常に終了します。
ToolBarコントロールのプロパティを何か変更する必要があるのでしょうか?

自作アプリだけの問題かとも思い、下記のような単純サンプルを作成して確認しましたが、EXEで動作させるとやはり同様の症状が発生します。

-------------------------------------------------
Private Sub MDIForm_Load()
End  '何もせずに終了する筈。
End Sub
-------------------------------------------------

ENDステートメントの直前で、何か実行する必要があるのかと思い、下記のようにも試してみました。

1)ToolBarを非表示にする。
Toolbar1.Visible = False 又は Set ToolBar1 = Nothing
END  '何もせずに終了する筈。
結果:ツールバーが非表示になるだけで、メインMDIフォームは表示されます。

2)メインMDIフォームを無効にする。
MDIForm1.Enabled = False
END  '何もせずに終了する筈。
結果:我ながらマヌケですが、メインMDIフォームが表示され、尚かつ×印すらクリック不可でした。

3)メインMDIフォームを非表示にする。
MDIForm1.Visible = False
END  '何もせずに終了する筈。
結果:MDIフォームが非表示となり、一見、よさそうですが、タスクマネージャで確認すると、該当アプリのタスクは終了はしていませんでした。

その他、ENDの代わりに、STOPを使用してみました。
この場合は、STOP実行時に「STOPステートメントで中断しました」とのメッセージが表示され、OKボタンで、やはりメインMDIフォームが表示されます。

どなたか、MDIフォーム+ToolBarコントロールを組み込んだ状態で、正常にENDステートメントを動作させる方法を教えてください。(EXEでの動作です。)

また、VBでデバッグさせている状態だと問題無く終了するのは何故なのでしょうか?。
よろしくお願いします。

A 回答 (1件)

Initializeイベントで


Me.TooBar1.Enabled = False
を実行しておきます

こうしておけば MDIフォームのLoadイベントでEndステートメントも実行されるようです

ツールバーの初期化が関係しているのかもしれませんね
    • good
    • 0
この回答へのお礼

お礼が遅くなってしまい、申し訳ないです。
redfox63さん ありがとうございました。

Initializeイベントで
Me.TooBar1.Enabled = False とし、フォームの初期化時にツールバーを無効化することで解決できました。

ただ、このままですとツールバーが無効のままですので、
さらに、Activateイベントで下記のように有効に戻すようにしました。
Private Sub MDIForm_Activate()
Toolbar1.Enabled = True
End Sub

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

お礼日時:2007/12/28 19:00

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!