前回は、ダイアログボックスの開き方について記述しました。
今回は、開いたダイアログ側のプログラムについて記載します。ダイアログボックスでは、通常のフォームとは違うコーディングが必要となります。
ダイアログボックスの設計はフォームでできています。フォームを開くときには、通常のフォームと同様に QueryOpen、PostOpen イベントが発生します。
閉じるときも同様に QueryClose イベントが発生します。ただ、通常のフォームと違うのは、フォームの閉じ方です。ダイアログボックスは、単に閉じるだけではなく、[OK]か[キャンセル]のボタンのどちらかで閉じることになります。入力チェックは、[OK]の時だけ実行する必要があります。必須項目を入力しないと、キャンセルできないのは不便ですからね...
その判定を行うのが、NotesUIDocument クラスの DialogBoxCanceled プロパティです。
以下のコードは、私がダイアログボックスに記述する一般的なプログラムです。最初に DialogBoxCanceled プロパティが True の場合、イベントを抜けています。これで、キャンセルした場合は、入力チェックせずに閉じることになります。
その後、入力チェックする関数 IsError() をコールして、エラーがあった場合は、ダイアログボックスが閉じるのをキャンセルするため Continue を False にセットしています。 これで、正しく入力するまで[OK]で閉じれないようにしています。
Sub QueryClose(Source As NotesUIDocument, Continue As Variant) If Source.DialogBoxCanceled Then Exit Sub If IsError(Source) Then Continue = False Exit Sub End If End Sub |
なお、入力チェックする関数は以下の通りとなります。ここで、入力の有無や関連するフィールドの整合性を確認します。
エラーがなかった(=最後まで関数が実行された)場合、戻り値を False にセットし、エラーがなかったことを呼び出し元に返しています。
%REM エラーの場合、メッセージを表示して True を返す %END REM Function IsError(vnuid As NotesUIDocument) As Integer Dim nd As NotesDocument Set nd = vnuid.Document IsError = True '以下に入力チェックを記述(エラー時は関数を抜ける) '次の入力チェックを以下に記述 IsError = False '最後まで実行したらエラーなし End Function |
0 件のコメント:
コメントを投稿