§1 人に使ってもらうソフトウェア VB6 | |
(8) 終了時の確認 |
「電圧の計算(オームの法則)」のプログラムでは、フォームに配置した「終了ボタン」をクリックすると、すぐに終了してしまう。
終了を選択したときにいきなり終了してしまうのではなく、終了するかどうかの確認ができたり、作成したデータが保存されていない旨の警告を出したりしたいことがある。このような処理は、終了のボタンやメニューの処理としてプログラミングする。
ここでは 「電圧の計算(オームの法則)」のプログラムに終了確認の処理を追加する。
簡単な確認には、メッセージボックスMsgBox関数を使う。ダイアログにメッセージを表示して、ボタンがクリックされるのを待つ。
MsgBox関数の書式 書式 MsgBox(prompt[, buttons] [, title] [, helpfile, context]) 詳細は、ヘルプを参照のこと。 |
終了ボタン(Command2)をクリックすると実行されるCommand2_Clickプロシージャにコードを追加する。
・プログラムリスト(追加)
Private Sub Command2_Click() Dim yn As VbMsgBoxResult yn = MsgBox("終了しますか。", vbYesNo, "終了確認") If yn = vbNo Then Text1.SetFocus Exit Sub End If Unload Me End End Sub
変数ynをVbMsgBoxResult型で宣言しているが、Integer型でも良い。
Exit Subは、このプロシージャ(Command2_Click)から強制的に抜け出す命令である。
図1-8-1 |
改良点
終了ボタン(Command2)ではなく、コントロールボックスの「閉じる」ボタンをクリックすると確認のダイアログが表示されずに終了してしまう。
アプリケーションが終了(UnLoad)する直前にはQueryUnloadイベントが発生するので、終了確認及び終了のプログラムをForm_QueryUnloadプロシージャに記述する。
・プログラムリスト(変更・追加)
Private Sub Command2_Click() '終了ボタンをクリックしたときに実行される。 Unload Me 'QueryUnloadイベントが発生する。 End Sub 'アプリケーションが終了する直前に実行される。 Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer) Dim yn As VbMsgBoxResult yn = MsgBox("終了しますか。", vbYesNo, "終了確認") If yn = vbNo Then Text1.SetFocus Cancel = True 'Trueでフォームはアンロードされない。終了しない。 Exit Sub End If End End Sub
アプリケーションが終了する直前に、QueryUnload イベント プロシージャまたは Unload イベント プロシージャ内でCancelプロパティを真 (True) に設定すると、アプリケーションを閉じる処理を中止することができる。
QueryUnload イベントはすべてのフォームに対して、それらのフォームのアンロード処理が始まる前に発生する。一方、Unload イベントは各フォームがアンロードされるたびに発生する。
(8) 終了時の確認 | |
Copyright © 2001,2002 Hiroshi Masuda |