2010年3月17日水曜日

文書の背景色を変更するには

懇談室のこの話題について検討してみました。

文書の背景色は動的に変更できることがIBMのWEBサイトに掲載があります。

文書の背景色を動的に変更する方法

ただ、こうやって背景色を変更することが後のバージョンでもサポートされている、ということではないことに注意してください。

早速試してみました。

次のサンプルでは、チェックボックスにチェックを付けて保存した文書を開くと背景はグレーになります。
チェックがない場合、背景は白になります。

フォームには2つのフィールドを追加します。

フィールド「Color」...チェックボックス、編集可能
キーワードには「選択肢を入力」として次の1行を設定します
グレー表示

フィールド「$PaperColor」...数値、計算結果
値として次の式を設定します
@If(Color="グレー表示"; 15; 1)

※ $PaperColor へ設定する数値については以前に投稿したエントリが参考になると思います。


R5以降では自動で作成される $PaperColorEx を削除するため、フォームのイベント Postsave へ次のスクリプトを記述します。
Sub Postsave(Source As Notesuidocument)
    Dim doc As NotesDocument
    Set doc = Source.Document
    If doc.HasItem( "$PaperColorEx" ) Then
        Call doc.RemoveItem( "$PaperColorEx" )
        Call doc.Save( True, True )
    End If
End Sub

これで完成です。なかなかいい感じですね。

もしフォームに $PaperColor フィールドを作りたくない場合、 上の Postsave イベントのコードを下の様に変更することで設定できました。
Sub Postsave(Source As Notesuidocument)
 Dim doc As NotesDocument
 Dim color%
 Set doc = Source.Document
 If doc.Color(0) = "グレー表示" Then
  color = 15
 Else
  color= 1
 End If
 Call doc.ReplaceItemValue("$PaperColor", color)
 
 If doc.HasItem( "$PaperColorEx" ) Then
  Call doc.RemoveItem( "$PaperColorEx" )
 End If
 Call doc.Save( True, True )
End Sub
※QuerySave で$PaperColor アイテムの値を置換しても、保存したときに文書に設定されていた背景色の値に置き換わってしまうようです...orz

0 件のコメント:

コメントを投稿