作成者カテゴリ返答の対象
公開
びぃ〜
02/22/2000 06:36 PM
リッチテキストの内容のコピー
Re:リッチテキストの内容のコピー

表示用のリッチテキストとは計算結果ということでよかったでしょうか?
とりあえずそういう事で話を進めます。(長いです)

postopenに次のように書きます。

Sub Postopen(Source As Notesuidocument)

Dim doc As notesdocument
Dim ritem As notesrichtextitem
Dim NID As String

Dim s As New notessession
Dim db As notesdatabase
Dim ndoc As notesdocument
Dim nuidoc As notesuidocument

If source.isnewdoc Then Exit Sub
Set doc = source.document
If doc.openflg(0) = "1" Then Exit Sub

Call doc.removeitem("cbody")
Set ritem = doc.getfirstitem("body")
Dim critem As New notesrichtextitem(doc,"cbody")
Call critem.appendrtitem(ritem)
Call doc.save(True,True)
NID = doc.noteid
Call source.close
doc.openflg = "1"

Set db = s.currentdatabase
Set ndoc = db.getdocumentbyid(NID)
Set nuidoc = ws.editdocument(True,ndoc)

End Sub

bodyというフィールドが編集可能なリッチテキストで
cbodyというフィールドが計算結果のリッチテキストです

次にquerysaveに

Sub Querysave(Source As Notesuidocument, Continue As Variant)
Dim doc As notesdocument
Set doc = source.document
doc.openflg = ""
End Sub

と書きます。以上です

これは新大阪さんのリッチテキストのコピーと、
まるさんのリッチテキストの色についての質問を参考にしてあります。
質問に答えるだけでもかなり勉強になっています。

少し説明をすると、基本的にOtaさんの考え方で正解だと思います。
おっしゃる通りリッチテキストは保存しないと認識しません。
そのため表示用のフィールドにコピーした後にも保存してやる必要があります。
さらに文書を開き直さないと更新されません。(Reloadしてもだめでした)
仕方ないので一度閉じてGetdocumentbyidで開き直しています。
postopenに書いているため開き直したときにもまたこのスクリプトが走ってしまうので、
openflgで制御しています。
保存するか閉じたときにopenflgは""になります。
openflgというフィールドは必要ありません。(作っても特に害はないと思いますが)

あと、postopenやquerysaveにはuidocumentクラスはsourceとしてあらかじめ宣言してあるので宣言し直す必要はないですよ

良く分からなかったらまた聞いてください。

軽い息抜きのつもりで作りはじめたら意外に大変でした ^^;


[Previous Main Document]
リッチテキストの内容のコピー (Ota)
. . ↓これの追加です (びぃ〜)
. . . . びぃ〜さん、ありがとうございます。でも。。。 (Ota)
. . . . . . Re:リッチテキストの内容のコピー (びぃ〜)
. . . . . . . . Re:リッチテキストの内容のコピー(なんとかできました) (Ota)
. . Re:リッチテキストの内容のコピー (びぃ〜) * 現在地 *
[Next Main Document]