2023/04/09

リッチテキスト:#1)フィールドの作成

リッチテキストフィールドは、フォントやサイズ、色、文書リンクや添付ファイルなど様々なデータが格納できます。また、それらを混合して保存できるとても便利で柔軟なフィールドです。

ノーツに携わり始めたころ、その便利さに感心しました。しかも、違う OS で参照しても同じように見えることに驚いたことを覚えています。当時は、Windows 3.1 と OS/2(?) だったような気がしますが...

ノーツのフィールドは、テキストや数値など型を指定します。ですので、そのフィールドに保存される値もその型となり単純です。

しかし、リッチテキストフィールドは前述の通り、様々なデータが連なって格納されます。これをプログラムで操作できるように、LotusScript では、専用のクラスが多数用意されています。例えば、

  • NotesRichTextItem クラス
  • NotesRichTextDocLink クラス
  • NotesRichTextStyle クラス
  • NotesRichTextParagraphStyle クラス

などなどです。

プログラムでリッチテキストを操作する場合、用途に応じたクラスを使用する必要があります。多種多様なデータを取り扱うことから、必要となるクラスやプロパティ / メソッドが多数あり、使い方に注意すべき点もあります。

このシリーズでは、LotusScript のリッチテキストの取り扱い方法を整理していきます。


新規リッチテキストフィールドの作成

今回は初回ですので、一番単純なパターンです。

新規文書を作成し、そこにリッチテキストフィールドを作成し、文字列をセットするだけです。サンプルプログラムは以下の通りです。

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 = "リッチテキスト:#1)フィールドの新規作成"

   Set nrti = nd.CreateRichTextItem("Body")
   Call nrti.AppendText("このフィールドはリッチテキストです。")
   Call nrti.AddNewLine(1)
   Call nrti.AppendText(|フィールド名は、"| & nrti.Name & |"です。|)

   Call nd.Save(True, False)
End Sub


NotesRichTextItem クラス

リッチテキストフィールドを表すクラスです。このオブジェクトを起点にして、リッチテキストフィールドの値にアクセスします。

今回のサンプルでは、文書とフィールドを新規に生成しています。リッチテキストフィールドの作成は、NotesDocument クラスの CreateRichTextItem メソッドを使用します。このメソッドの戻り値は、作成された NotesRichTextItem のオブジェクトとなります。

文字列の追加は、AppendText メソッドを使用しています。なお、このメソッドは、文字をどんどん追加するだけのメソッドです。改行したいときには、AddNewLine メソッドを使用して明示的に指示する必要があります。


NotesItem クラス と NotesRichTextItem クラス

NotesRichTextItem クラスは、NotesItem クラスを継承しています。継承とはオブジェクト指向で出てくる基本的な概念となります。

オブジェクト指向とは、プログラムの作成手法の一つです。モノ(=オブジェクト)を組み合わせてプログラミングする、今時は主流の考え方と言えます。オブジェクトには、データと機能があり、それぞれプロパティとメソッドとして定義されます。継承はオブジェクトの定義において、共通部分をうまく使って別のクラスを定義するって感じでしょうか。

簡単に言うと、NotesRichTextItem では、NotesItem クラスが持つプロパティやメソッドも使用できるということです。上記サンプルで、Name というプロパティにアクセスしてフィールド名を取得しています。これは NotesItem クラスから継承した機能を利用しているということになります。

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

0 件のコメント:

コメントを投稿