サンプルとして、重要度により文書の背景の色を変える方法
まず一つスクリプトライブラリcommonにChangeFormサブルーチンを作成します。
Sub ChangeForm(doc As NotesDocument)
If doc.level(0) = "高" Then
doc.Form = "main-red"
Elseif doc.level(0) = "中" Then
doc.Form = "main-yellow"
Else
doc.Form = "main"
End If
Call doc.save(True, True)
End Sub
次にmainフォームを作成します。
その上で、セーブ時に先に作ったChangeFormをCallします。
このとき(options)にUse "common"の宣言を忘れないこと。
Sub Postsave(Source As Notesuidocument)
Dim doc As NotesDocument
Set doc = Source.Document
Call ChangeForm(doc)
End Sub
フィールドとかはこんな感じ↓で。
mainフォームの背景は白に。
あとはmainフォームをコピーし、
そこからmain-redとmain-yellowの二つのフォームを作り、
main-redフォームの背景は薄いピンク。
main-yellowフォームの背景は薄い黄色に変更します。
これで、mainフォームから作られた文書の
levelフィールド(重要度)が変更され保存される度に、
フォームが切り替わり文書の背景色が変わったように見えるはずです。
今回のは背景しか色を変えてませんが、
リッチテキスト以外のフィールドなら設計上の色に見た目が変わるかも。
(この辺はちゃんとテストしてないので。。。)
あとは、非表示・表示の切替が複雑なフォームになる場合、
非表示したい行やフィールドを削除したフォームを別につくり、
ステータス(フラグ)によって、フォームを切り替えることにより
擬似的に非表示・表示の切替もできるようになります。
他にも応用として、
あるDB(A)から他のDB(B)に文書を作成する場合、
指定したフォームがAのDBになくても、
文書の作成先のBのDBにその指定したフォームがあれば、問題ありません。
特に、メール文書をAのDBから作成し、BのメールDBに送信するだけならば、
BのmemoフォームをAのDBにコピーさせる必要はありません。
(AのDB上でも作成したメール文書を保存し、AのDB上で参照したい場合は、
BのmemoフォームをAのDBにコピーする必要があります。)
つまり、参照するDB内にそのフォームがあれば文書は表示できちゃいます。
まぁフィールドが一致しないと各データ表示は無理ですけどね。
これを踏まえておくと、色々応用ができるようになりますよー。
[1回]
PR
COMMENT