2023/08/27

リッチテキスト:#9)タブの設定

今回はリッチテキストにタブをセットする方法です。

タブの設定は、段落ごとに設定することになるので、NotesRichTextParagraphStyle クラスが担当します。


タブの設定

タブを設定するには SetTab メソッドを利用します。構文とパラメータは以下の通りです。

   Call notesRichTextParagraphStyle.SetTab(position, type%)

  • position

Long型。タブの位置を指定します。 

インデントの設定を同じく、単位は twip です。1 cm = 567 twip、1 inch = 1440 twip です。RULER_ONE_CENTIMETER と RULER_ONE_INCH を使用すると容易に計算できます。 

  •  type%

Integer型。タブの種類です。以下の定数が使えます。

定数
0 TAB_LEFT
1 TAB_RIGHT
2 TAB_DECIMAL
3 TAB_CENTER


サンプルプログラム

SetTab メソッドを使用したサンプルは次の通りです。

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

   nd.Form = "RichText"
   nd.Title = "リッチテキスト:#9)タブの設定"

   Set nrti = nd.CreateRichTextItem("Body")
   Set nps = ns.CreateRichTextParagraphStyle()

   '1行目
   Call nps.SetTab(4 * RULER_ONE_CENTIMETER, 0)
   Call nrti.AppendParagraphStyle(nps)
   Call nrti.AppendText("ABC" & Chr(9) & "DEF" & Chr(9) & "GHI")

   '2行目
   Call nps.SetTab(6 * RULER_ONE_CENTIMETER, 0)
   Call nrti.AppendParagraphStyle(nps)
   Call nrti.AppendText("ABC" & Chr(9) & "DEF" & Chr(9) & "GHI")

   Call nd.Save(True, False)

文字列にタブを挿入するには、文字コードの 9 をセットします。LotusScript だと、Chr(9) となります。

実行すると以下のようになります。


1行目は 4 cm にタブをセットしています。

2行目は 6 cm にセットしています。この時、1行目をセットした NotesRichTextParagraphStyle のオブジェクトを使いまわしているので、4 cm のタブに 6 cm のタブを追加するという動作になっています。このように、SetTab を何度もコールすることで複数のタブを1つの段落にセットできます。


タブの種類

SetTab の2つ目の引数はタブの種類の指定となっていました。

実は、これまでこの引数は全く意識しておらず、いつも 0 を設定していました。何のためにあるんだろう?とまで思っておりました。

この記事を書くために検証して初めて価値を知りました。

この機能は、タブで間隔をあけた文字をどのように表示するのか指定する機能でした。試しに次のようなコードに修正してみました。

   Set nrti = nd.CreateRichTextItem("Body")
   Set nps = ns.CreateRichTextParagraphStyle()

   'TAB_LEFT
   Call nps.SetTab(6 * RULER_ONE_CENTIMETER, TAB_LEFT)
   Call nrti.AppendParagraphStyle(nps)
   Call nrti.AppendText("TAB_LEFT" & Chr(9) & "1,234.56")

   'TAB_RIGHT
   Call nps.ClearAllTabs()
   Call nps.SetTab(6 * RULER_ONE_CENTIMETER, TAB_RIGHT)
   Call nrti.AppendParagraphStyle(nps)
   Call nrti.AppendText("TAB_RIGHT" & Chr(9) & "1,234.56")

   'TAB_DECIMAL
   Call nps.ClearAllTabs()
   Call nps.SetTab(6 * RULER_ONE_CENTIMETER, TAB_DECIMAL)
   Call nrti.AppendParagraphStyle(nps)
   Call nrti.AppendText("TAB_DECIMAL" & Chr(9) & "1,234.56")

   'TAB_CENTER
   Call nps.ClearAllTabs()
   Call nps.SetTab(6 * RULER_ONE_CENTIMETER, TAB_CENTER)
   Call nrti.AppendParagraphStyle(nps)
   Call nrti.AppendText("TAB_CENTER" & Chr(9) & "1,234.56")

ちなみに、ClearAllTabs() メソッドは、これまでのタブの設定をすべて削除します。これで毎行別のタイプのタブを設定しています。

実行した結果は次の通りです。

TAB_LEFT、TAB_RIGHT と TAB_CENTER はタブ位置を起点に文字をどちらに寄せるかを指定します。

TAB_DECIMAL は、小数点の位置で揃っています。ほかの値をセットしてテストしましたが、小数点以下の桁数に関係なく、揃えてくれました。小数点がない場合は、TAB_RIGHT と同じ結果となります。なかなか使えそうな機能ですね。

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

0 件のコメント:

コメントを投稿