2025/08/31

DialogBox メソッドと NotesDocument の利用

前回の記事では NotesUIWorkspace クラスの DialogBox メソッドを紹介しました。このメソッドでは @DialogBox とは違いダイアログボックスに表示する文書をしてする引数が存在します。今回は、この引数を使った事例を紹介ます。

flag = notesUIWorkspace.DialogBox( form$ , [autoHorzFit] , [autoVertFit] , [noCancel] , [noNewFields] , [noFieldUpdate] , [readOnly] , [title$] , [notesDocument] , [sizeToTable] , [noOkCancel] , [okCancelAtBottom] )


ヘルプ機能

ノーツの[ヘルプ]メニューから[アプリケーションの使い方]を選択するとそのアプリのヘルプを表示する機能があります。表示するコンテンツはデザイナーで記述する上、アプリで 1 つしか記述できません。これでは自由度がありませんね。ビューやフォームなどの機能ごとにヘルプが表示でき、アプリの運用部門がコンテンツを作成できるようにしておけばよりタイムリーなヘルプとなります。

DialogBox メソッドを使用すれば、このような機能が作成できます。

例えば、”はじめに” という文書を表示する[ヘルプ]ボタンは、次のようなコードとなります。

Sub Click(Source As Button)
   Dim nuiw As New NotesUIWorkspace
   Dim ndHelp As NotesDocument

   ' キーワードに一致したヘルプ文書を取得
   Set ndHelp = GetHelpDoc("はじめに")

   ' 取得したヘルプ文書をダイアログで表示
   Call nuiw.DialogBox(ndHelp.Form(0), , , True, , , True, ndHelp.Title(0), ndHelp, , , True)
End Sub

GetHelpDoc は引数に指定したヘルプ文書を取得する関数をイメージしています(関数の中身やヘルプ文書のフォームは主題ではないので割愛)。

メソッドの引数にはこれまで使っていないものが含まれますので、設定理由とともにすべてを列挙します。

1 form$ フォーム名は文書のままとする
2 autoHorzFit
省略
表やレイアウト領域に合わせせない
3 autoVertFit
4 noCancel キャンセルボタン不要なので True
5 noNewFields 省略
6 noFieldUpdate
7 readOnly 編集する必要はないので True
8 title$ ヘルプ文書のTitle フィールドを設定
9 notesDocument ヘルプ文書を指定
10 sizeToTable 省略
11 noOkCancel
12 okCancelAtBottom ボタンを下に表示したいので True

ボタンをクリックすると[OK]ボタンだけが下部に表示されたダイアログボックスが表示されます。レイアウト領域や表に合わせない設定の場合、ウィンドウサイズは、画面の解像度から適当に判断されるようです。


検索条件の入力

Excel 帳票や CSV ファイルに出力する際、対象データを限定したいことがあります。このような機能の作成にも DialogBox メソッドが使えます。

まず、ダイアログ用のフォームを作成します。

ビューのアクションボタンにこのダイアログを利用した帳票出力機能を作成します。サンプルコードは次の通りです(帳票出力する関数 ExportList は本題ではないので割愛)。

Sub Click(Source As Button)
   Dim ns As New NotesSession
   Dim ndb As NotesDatabase
   Dim nd As NotesDocument
   Dim nuiw As New NotesUIWorkspace

   Dim vFrom As Variant           '期間(開始)
   Dim vTo As Variant                 '期間(終了)
   Dim sArea As String               'エリア
   Dim vKeyword As Variant   'キーワード(リスト)

   Set ndb = ns.CurrentDatabase
   Set nd = ndb.CreateDocument

   If True = nuiw.DialogBox("dlgSearchCondition", True, True, , , , , "出力条件", nd) Then
      '入力した条件を取得
      vFrom = nd.From(0)
      vTo = nd.To(0)
      sArea = nd.Area(0)
      vKeyword = nd.Keyword   'ここだけリスト値

      '帳票出力
      Call ExportList(vFrom, vTo, sArea, vKeyword)
   End If
End Sub

ポイントは新規作成した文書を使用している点です。ダイアログボックスで入力された値は、この新規文書内のフィールドとして返ってきます。それを取得することで、入力値を取得しています。

なお、帳票出力後はそのまま処理を終了しています。新規作成された文書は、保存していないので、プログラムの終了と同時に消滅することになります。


0 件のコメント:

コメントを投稿