見出し画像

DXL活用例 -動的な印刷画面- その3

前回に引き続き、印刷画面生成エージェントについて、解説していきます。
※前回の記事と連動していますので、もし読まれてない場合は、先に以下の記事をご確認ください。

いよいよこのシリーズも3回目となり、残すは置換するリッチテキストフィールドのDXLを作成するプログラムのみとなります。今回はその前段階として、リッチテキストフィールドに作成したい表のDXLの情報を確認する方法を解説します。

作成したい表のDXLを確認する最も簡単な方法は、実際に文書に表を作成し、その文書のDXLを出力して確認することです。つまりモックアップの作成ですね。
今回は前回までのエージェントからは少し離れて、文書のDXLを確認する機能を作成してみます。

DXL確認フォームの準備

新規フォームを作成し、リッチテキストフィールドを1つ配置します。フィールド名は、[Body]としておきます。

DXL確認フォーム | fmCheck

次に、以下のアクションボタンを作成します。

$$
\begin{array}{|l|l|} \hline
\text{アクション名} & \text{概要}  \\ \hline
\text{保存} & \text{文書を保存する} \\ \hline
\text{DXL出力} & \text{文書のDXLを出力する} \\ \hline
\end{array}
$$

[保存]アクションは、単純な文書保存の為、詳細は省略します。

[DXL出力]アクションについては、以下のLotusScriptを設定します。

Sub Click(Source As Button)
	Dim ns			As New NotesSession
	Dim ws			As New NotesUIWorkspace
	Dim uidoc		As NotesUIDocument
	Dim nd			As NotesDocument
	Dim dxlExp		As NotesDXLExporter
	Dim strDXL		As String
	Dim fileNum		As Integer
	
	Set uidoc = ws.CurrentDocument
	Set nd = uidoc.Document
	Set dxlExp = ns.CreateDXLExporter
	strDXL = dxlExp.Export(nd)
	
	fileNum = Freefile
	Open "c:¥dxl¥Check.txt" For Output As fileNum
	Write #fileNum, strDXL
	Close fileNum
	
	Msgbox "出力が完了しました"
End Sub

処理を実行すると、表示中文書のDXLが、CドライブのDXLフォルダに「Check.txt」として出力されます。
※上記には出力先フォルダが存在しない場合の考慮はされていません。事前にCドライブにDXLフォルダを作成するか、プログラム内のファイルパスを環境に合わせて修正してください。

実際に利用してみよう

操作は以下の手順となります。

 1:DXL確認フォームで文書を新規作成する
 2:リッチテキストフィールドに作成したい表のモックアップを作成
 3:文書を保存して、文書を閉じる
 4:保存した文書を開く
 5:[DXL出力]アクションを実行する

処理が完了したら、出力されたファイルを確認します。今回は、フィールド名が[Body]の為、「<item name='Body'>~</item>」の個所が[Body]フィールドのデータを示すDXLとなります。

<item name='Body'><richtext>
<pardef id='1'/>
<par def='1'/>
<table widthtype='fixedleft' refwidth='6.5in'><tablecolumn width='2in'/><tablecolumn
 width='3in'/><tablecolumn width='1.5in'/>
<tablerow>
<tablecell bgcolor='#d2d2d2'>
<pardef id='3' align='center' keepwithnext='true' keeptogether='true'/>
<par def='3'>件名</par></tablecell>
<tablecell bgcolor='#d2d2d2'>
<pardef id='4' align='center' keepwithnext='true' keeptogether='true'/>
<par def='4'>コメント</par></tablecell>
<tablecell bgcolor='#d2d2d2'>
<pardef id='5' align='center' keepwithnext='true' keeptogether='true'/>
<par def='5'>作成日</par></tablecell></tablerow>
<tablerow>
<tablecell>
<pardef id='6' keepwithnext='true' keeptogether='true'/>
<par def='6'>文書1の件名です</par></tablecell>
<tablecell>
<pardef id='7' keepwithnext='true' keeptogether='true'/>
<par def='7'>文書1のコメント1</par>
<par def='7'>文書1のコメント2</par></tablecell>
<tablecell>
<pardef id='8' keepwithnext='true' keeptogether='true'/>
<par def='8'>2024/01/01 10:00:00</par></tablecell></tablerow>
<tablerow>
<tablecell>
<par def='6'>文書2の件名です</par></tablecell>
<tablecell>
<par def='7'>文書2のコメントです</par></tablecell>
<tablecell>
<par def='8'>2024/01/02 12:00:00</par></tablecell></tablerow></table>
<par def='1'/></richtext></item>

次回予告

次回は、このDXLのサンプルをもとに、印刷画面生成エージェントでリッチテキストフィールド用のDXLを作成していきたいと思います。

いいなと思ったら応援しよう!