当ブログに掲載しているサンプルは、すべて利用者の自己責任という形でお願いします。
ただし、明らかな不具合がある場合、ご連絡いただければ、訂正記事を出します。
また、こちらのサンプルは、別のサイト等への公開、転載は一切禁止しています。
どうしてもと言う場合は、筆者にあらかじめご連絡ください。

テクてく Lotus 技術者 Slack に参加しよう!

2011年1月27日木曜日

リッチテキスト内の特定の文字属性を変更する

8.5の資格試験の勉強中ですが、なにやら頭がパンクしそうです。
中級の資格の中に、xPagesとか盛り込まないで欲しい!と思っているのは筆者だけではないはずです。
上級がLotusScriptっておかしいよなぁ。まぁ、筆者はLotusScriptの試験は合格済みなので、アップデートすれば良いだけなのですが。


ということで、恒例のクリックの時間です。昨日、クリックした方もそうでない方もクリックしてくださいね。
にほんブログ村 IT技術ブログへ


さて、今日もどこぞの懇談室の話題について書いてみます。
既存の文書のリッチテキストの内容を変更してみるというものです。

NotesRichText関連のクラスは、たくさんあり、それぞれの役目がどういったものなのか難しいので、使いこなすのが大変かと思いますが、今回は以下のように考えます。
  1. リッチテキストの中を検索する(NotesRichTextNavigatorクラス)。
  2. 変更後のスタイルを決定する(NotesRichTextStyleクラス)。
  3. 変更したい範囲を決定する(NotesRichTextRangeクラス)。
  4. 範囲に対して、スタイルをセットする(NotesRichTextRangeクラス)。


では、サンプルです。
以下のサンプルは、エージェントとして作成してあります。
ビューで選択した文書の、"Body"というリッチテキストフィールド中のフォントスタイルを変更するというものです。
変更する文字列は、「あいうえお」で始まり、「さしすせそ」の前にある文字までです。
「さしすせそ」の文字は変更対象にならないことに注意してください。

また、サンプルはエラー処理とかは施していませんので、実際に利用する際は、注意してください。
Sub Initialize
    Dim session As New NotesSession
    Dim curdb As NotesDatabase
    Dim docs As NotesDocumentCollection
    Dim doc As NotesDocument
    Dim ritem As NotesRichTextItem
    Dim rnavi As NotesRichTextNavigator
    Dim rrange As NotesRichTextRange
    Dim rstyle As NotesRichTextStyle
    
    '現在の文書及びリッチテキスト取得
    Set curdb = session.CurrentDatabase
    Set docs = curdb.UnprocessedDocuments
    Set doc = docs.GetFirstDocument
    
    'リッチテキストスタイルの作成
    Set ritem = doc.GetFirstItem( "Body" )
    
    ' リッチテキストナビゲータの作成
    Set rnavi = ritem.Createnavigator() '文字列検索用
    Set rrange = ritem.Createrange() '文字範囲指定用
    Set rstyle = session.CreateRichTextStyle() '文字スタイル用
    
    'リッチテキストのスタイルを変更する
    rstyle.Notescolor = COLOR_RED
    rstyle.Italic = True
    
    ' リッチテキスト内の文字列の検索
    If rnavi.FindFirstString( "あいうえお" ) = True Then
        '検索した最初の文字を、範囲の最初に位置づける
        Call rrange.Setbegin( rnavi )
        '範囲の最後の文字列の検索
        If rnavi.FindFirstString( "さしすせそ" ) = True Then
            '検索した文字の前の文字を、範囲の最後に位置づける
            Call rrange.Setend( rnavi )
        End If
        
        '設定したスタイルを範囲にセットする
        Call rrange.Setstyle( rstyle )
    End If
    
    '文書を上書き保存する
    Call doc.Save( True, True )
End Sub



【PR】ノーツ/ドミノに関するお問い合わせは下記まで【PR】
単純なDBのカスタマイズから他アプリケーションとの連携までご要望にお応えします
Lotus Notes/Domino カスタマイズとセキュリティ強化 - 株式会社エフ

0 件のコメント: