2023/10/07

リッチテキスト:#10)表の作成

今回はリッチテキストに表を作成する方法についてまとめます。

 

表の作成

リッチテキストに表を作成するには NotesRichTextItem クラスの AppendTable メソッドを使用します。

Call notesRichTextItem.AppendTable(rows, columns[, labels][, leftMargin][, styleArray])

  • rows

Integer 型。作成する表の行数を指定。

  • columns

Integer 型。作成する表の列数を指定。 

  • labels

省略可能。文字列型の配列。タブ形式の表とする場合に指定し、タブのタイトルに設定されます。配列の要素数は行数と一致させること。 

  • leftMargin

省略可能。Long 型。表の左マージン。単位は twip(第 4 回 参照) 。

  • styleArray

省略可能。NotesRichTextParagraphStyle の配列。列の幅や文字揃えなど列ごとのスタイルを指定。配列の要素数は列数と一致させること。 

省略した場合、自動幅の表となる。


サンプルプログラム

以下のサンプルプログラムは、新規で作成したリッチテキストに3つの表を追加します。最初は、単純に行列数だけを指定した表。次は、タブ形式の表。最後が左マージンとスタイルを指定したパターンです。

Sub Initialize
   Dim ns As New NotesSession
   Dim ndb As NotesDatabase
   Dim nd As NotesDocument
   Dim nrti As NotesRichTextItem

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

   nd.Form = "RichText"
   nd.Title = "リッチテキスト:#10)表の作成"

   Set nrti = nd.CreateRichTextItem("Body")

   '表1
   Call nrti.AppendTable(5, 3)

   '表2
   Dim asTitle(2) As String
   asTitle(0) = "タブA"
   asTitle(1) = "タブB"
   asTitle(2) = "タブC"
   Call nrti.AppendTable(3, 1, asTitle)

   '表3
   Dim nrtps(2) As NotesRichTextParagraphStyle
   Dim i As Integer
   For i = 0 To Ubound(nrtps)
      Set nrtps(i) = ns.CreateRichTextParagraphStyle()
      nrtps(i).LeftMargin = i * RULER_ONE_CENTIMETER
      nrtps(i).FirstLineLeftMargin = i * RULER_ONE_CENTIMETER
      nrtps(i).RightMargin = (i * 2 + 2) * RULER_ONE_CENTIMETER
   Next
   Call nrti.AppendTable(3, 3, , 5 * RULER_ONE_CENTIMETER, nrtps)

   Call nd.Save(True, False)
End Sub

下図は実行で作成された文書を編集モードにした状態です。次のように3つの表が作成されています。

最初の表は、細かな指定をしていませんので、等間隔の列となっており、”マージンに合わせる”設定となっています。

タブの表には、3つ目の引数で指定したタブのタイトルが設定されています。表の幅は、最初の表と同様に”マージンに合わせる”設定になっています。

スタイルを設定した最後の表は、引数で指定した左マージンが反映されていることがわかります。また、列幅が RightMargin で指定した幅 2, 3, 4 cm となっていて、各セルは列ごとに左マージンの設定がされています。上図では3列目にカーソルがありますが、上部のルーラを見ると左マージンが 2 cm に設定されていることがわかります。


今回テストした限りでは、表のスタイルを設定すると表は必ず固定幅となるようです。よって、一部の列幅を固定して、残りの列をマージンに合わせる設定はできなさそうでした。

前回 リッチテキストの基本操作 次回

0 件のコメント:

コメントを投稿