2021/01/04

文書を強制的に編集モードで開かせるための第3の方法

 カスタマサポートのナレッジを眺めていたところ、次のようなタイトルのナレッジを見つけました。

特定のメールを開くと、編集モードで開きます 特定の受信メールが編集モードで開きメールに対し返信や転送ができない


この文書には次のようにあります。

「$AutoEditMode」フィールドがメールに存在する場合、受信メール文書を開いたときに編集モードで表示されます。


私が気になったのは、メール以外のデータベースではどうなのかという点です。

メールではないデータベースに作成したエージェントに次のコードを書いて実行し、新規に作成した文書をビュー上でダブルクリックして開いてみたところ、編集モードで開きました。

Sub Initialize
	Dim ss As New NotesSession
	Dim doc As NotesDocument
	Set doc = New NotesDocument(ss.Currentdatabase)
	doc.Subject = "sample document"
	doc.Replaceitemvalue "$AutoEditMode", "1"
	doc.save True, false
End Sub


$AutoEditMode に "1" ではなく "" をセットすると、表示モードで開きました。


実はこれと似たようなことは、フォームのプロパティ「自動的に編集モードにする」を有効にする(チェックを付ける)ことでも実装できます。


これを有効にすると常に編集モードで開いてしまいます。

そして「自動的に編集モードにする」を有効にしたフォームで文書を作成しても $AutoEditMode というアイテムは自動で作成されるわけではありません。

また「自動的に編集モードにする」を有効にしたフォームの場合、$AutoEditMode に "" が設定されていても編集モードで開きました。つまりフォームのプロパティが優先されたということです。

「自動的に編集モードにする」を無効にしたフォームで文書を開いたとき、$AutoEditMode の値によって編集モードと表示モードを切り替えるといった用途で使えそうです。

たとえばアンケートDBでは、アンケートに回答の途中で保存すると、次に開けば編集モードになり、最後まで回答して保存すると次からは表示モードで開く、といったことをしたい場合があります。

このように文書の開くモードを条件によって設定するといったことはフォームのイベントへ LotusScript をゴリゴリ書いて実装することもできます。しかしながら $AutoEditMode アイテムを使ったほうが、次のような関数式でより簡単に実装できそうですね。

FIELD $AutoEditMode := "1";


【2020/1/19 追記】

第2の方法:プログラムで実装しますが、例えばフォームのイベント QueryOpen または PostOpen へ次のように記述すれば、常に編集モードで開きます。

Source.EditMode = True

0 件のコメント:

コメントを投稿