先日の懇談室のスレではNotesクライアントの設定次第でホットスポットにならないことがありますが、こちらはたぶん大丈夫。
やり方はちょっとズルイかもしれません。
1. リッチテキストに追加するホットスポットの定義が書かれたxmlをDBへインポートして文書を作ります
2. ビューで選択した文書のリッチテキストフィールドへ1で作成した文書のリッチテキストフィールドを追加し、保存します
3. 1で作成した文書を削除します
ここでxmlをどのように記述すればよいの?というギモンが湧きます。
実際に手動でホットスポットを作成した文書を作っておき、NotesDXLExporterクラスを使ってXML形式のファイルへ書き出してみました。
書き出したXMLファイルから要らなそうな記述を削除したものが、下のコードの docxml = | から</document>| までの部分です。
- Sub Initialize
- Dim ss As New NotesSession
- Dim db As NotesDatabase
- Dim dc As NotesDocumentCollection
- Dim doc As NotesDocument, tmpdoc As NotesDocument
- Dim rtitem As NotesRichTextItem
- Dim stream As NotesStream
- Dim importer As NotesDXLImporter
- Dim docxml As String
- Set db = ss.CurrentDatabase
- 'xmlの内容はExportした文書を参考に。
- docxml = |
- <document form="tmpHotspotResourceLink">
- <item name="Body">
- <richtext>
- <par def="1">
- <par def="1">
- <urllink showborder="false">
- <code event="value">
- <formula>"http://www.google.co.jp"</formula>
- </code>
- <run>検索サイトへのリンク</run>
- </urllink>
- </par>
- </par></richtext>
- </item>
- </document>|
- '文書作成用のxmlをストリームへ書き込み、文書へ変換する
- Set stream = ss.CreateStream
- Call stream.WriteText( docxml )
- Set importer = ss.CreateDXLImporter( stream, db )
- importer.DocumentImportOption = 2 'DXLIMPORTOPTION_CREATE
- Call importer.Process
- '変換した文書のリッチテキストフィールドの内容を選択文書へ追加する
- nid = importer.GetFirstImportedNoteId
- Set tmpdoc = db.GetDocumentByID( nid ) '変換した文書
- Set dc = db.UnprocessedDocuments
- Set doc = dc.GetFirstDocument '選択文書
- Set rtitem = doc.GetFirstItem( "Body" ) 'ホットスポットを追加するフィールド
- Call rtitem.AppendRTItem( tmpdoc.GetFirstItem( "Body" ) )
- Call doc.Save( True, True )
- '変換した文書を削除する
- Call tmpdoc.Remove( False )
- End Sub
xmlのうち、<urllink>タグがホットスポット、<formula>タグがリンク先のURLで、<run>タグがリンクとして表示する文言になります。
応用すればホットスポットボタンも追加できそううですね。
※Lotus Notes 8.0.1 Basic にて動作確認しました
0 件のコメント:
コメントを投稿
この投稿へのリンク
リンクを作成