2023/05/21

リッチテキスト:#4)インデント

今回のテーマは、リッチテキスト内の文字のインデントとアウトデントです。メールをはじめノーツで文章を書く場合、体裁を整えるために頻繁に使いますよね。

ノーツクライアントの操作では、ショートカットキーを使用して操作すると便利です。
F8 キーでインデント、Shift + F8 でアウトデントの操作になります。F7 キーを使用すると1行目だけのインデント、Shift + F7 で1行目だけをアウトデントできます。

また、同様の操作はルーラを表示するとマウスで操作することもできます。ルーラの ▽ が1行目の設定、△ が2行目以降の設定となります。また、△ の下の長方形で、1行目2行目をセットで操作できます。

このインデントの設定は、上図の通り、改行で区切られた1行ごとに設定できます。ノーツではこの単位を”段落”と呼びます。LotusScript では、この段落を操作するために NotesRichTextParagraphStyle クラスが用意されています。

NotesRichTextParagraphStyle (LotusScript®)

様々なプロパティとメソッドが用意されていますが、インデントに関する設定は、以下の2つです。

プロパティ用途
FirstLineLeftMarginその名の通り、1行目の左マージンです。
LeftMargin2行目以降の左マージンを表します。
すべての行の左マージンをセットするには、FirstLineLeftMargin も同じ値にセットします。


NotesRichTextParagraphStyle の使い方

まず、NotesRichTextParagraphStyle の作成です。このクラスのオブジェクトは、NotesSession クラスの CreateRichTextParagraphStyle メソッドを使用します。

CreateRichTextParagraphStyle (NotesSession - LotusScript®)

作成したオブジェクトに対して、マージンの設定を行い、段落のスタイルを準備します。
そして、その設定をリッチテキストに反映します。その操作を行うのが、NotesRichTextItem クラスの AppendParagraphStyle メソッドになります。

AppendParagraphStyle (NotesRichTextItem - LotusScript®)

これで、リッチテキストに段落のスタイルがセットされました。以降、リッチテキストに文字を追加するとこのスタイルがセットされることになります。

具体的なサンプルコードは以下のようになります。

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

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

   nd.Form = "RichText"
   nd.Title = "リッチテキスト:#4)インデント"

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

   '1行目
   Call nrti.AppendText("デフォルトのルーラ位置")

   '2行目
   nps.Leftmargin = 1.25 * RULER_ONE_INCH
   nps.Firstlineleftmargin = nps.Leftmargin
   Call nrti.AppendParagraphStyle(nps)

   Call nrti.AppendText("F8 キー分インデント。")

   '3行目
   nps.Firstlineleftmargin = 1.5 * RULER_ONE_INCH
   Call nrti.AppendParagraphStyle(nps)

   Call nrti.AppendText("F7 キー分だけ1行目をインデント。")
   Call nrti.AppendText("文字を折り返しさせると1行目だけが")
   Call nrti.AppendText("インデントされていることがわかります。")

   Call nd.Save(True, False)
End Sub

実行すると以下のように、行(段落)毎にインデントがセットされたリッチテキストが作成されます。

AppendParagraphStyle を実行すると段落が変更されますので、自動的に改行されることになります。


マージンの単位

ちなみに、これらプロパティでセットするマージンの値(単位)は、twip です。それぞれ、

  • 1 cm = 567 twip
  • 1 inch = 1440 twip

という関係になっています。コーディングでは以下の2つの定数が利用できます。

定数名
567RULER_ONE_CENTIMETER
1440RULER_ONE_INCH

なお、ノーツのデフォルトの左マージンは、2.54 cm となっていて中途半端な値です。上記定数を使用して計算すると、1 インチであることがわかります。
また、F7 / F8 キーでの移動量は、0.635 cm なのですが、これは 0.25 inch です。

これなら覚えやすいですね。

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

0 件のコメント:

コメントを投稿