ファイルの添付を1つだけ許可する(その4)
前回から引き続き、今回は呼び出されるダイアログフォームについて説明します。
前回の説明どおり、DialogBoxメソッドを実行したら直接ファイル選択ダイアログでファイル選択指示させる、と言う機能を実現させてみます。
◆ダイアログフォームの作成
とりあえず、フォーム名は前回のDialogBoxメソッドで呼び出すフォーム名とあわせてくださいね。
フォーム名・・・dlg添付選択
次にフィールドを用意しておきます。
フィールド名:ファイルパス・・・テキスト(作成時の計算結果)
そしてこのダイアログを開くイベント Postopen で OpenFileDialog メソッドを組み込みます。
これによってこのダイアログを呼び出すと同時にファイル選択ダイアログが表示されるようになります。
ちなみに、9行目はWindowsAPIを使用して実行PCのデスクトップのパスを取ってくる関数を使っていますが、ここでの説明は割愛します。適当にデフォルトパスを記述してください。
1: Sub Postopen(Source As Notesuidocument)
2: Dim ws As New NotesUIWorkspace
3: Dim uidoc As NotesUIDocument
4: Dim doc As NotesDocument
5:
6: Set uidoc = Source
7: Set doc = uidoc.Document
8:
9: strDesktop$ = FunSpecialFolderGet(2)'APILib6
10: strArray = ws.OpenFileDialog( False , "添付したいファイルを指定してください" , , strDesktop$ )
11: If Not( Isempty( strArray ) ) Then
12: Call doc.ReplaceItemValue( "ファイルパス" , strArray )
13: End If
14:
15: Call uidoc.Close()
16:End Sub
さらに Postopen イベントの15行目で即フォームをクローズするように処理を入れています。
通常はダイアログのOKボタンで閉じられるものですが、 RefreshParentNote メソッドを使ってOKボタンを使用しない場合は、このメソッドを使用します。
1: Sub Queryclose(Source As Notesuidocument, Continue As Variant)
2: Dim ws As New NotesUIWorkspace
3: Call ws.RefreshParentNote( )
4: End Sub
さて、ココまでの設計で通常はOKなはずですが、私の使ったNotees 6.0.3では、ダイアログフォーム上にボタンオブジェクトが存在していないと、RefreshParentNote実行時にエラーが表示されてしまいました。
今回はフォームにダミーのボタンを用意し、式に @True とでも入れておいていただければいいと思います。
さあ、それでは、本体フォームから実行してみてください。選択したファイルパスが、プロンプトメッセージに表示されれば、ここまでのロジックは正しく出来ています。
全体の流れでいう1がここまでになります。次回は2~4ですね。ここまで来ると、多分あっという間に終わってしまいます(^^;
それではまた次回~。