当ブログに掲載しているサンプルは、すべて利用者の自己責任という形でお願いします。
ただし、明らかな不具合がある場合、ご連絡いただければ、訂正記事を出します。
また、こちらのサンプルは、別のサイト等への公開、転載は一切禁止しています。
どうしてもと言う場合は、筆者にあらかじめご連絡ください。

テクてく Lotus 技術者 Slack に参加しよう!

2009年4月17日金曜日

ESCで文書をクローズさせない

SaveOptions というフィールドに"0"を代入しておいて、文書を閉じると、確認のダイアログが出ることなく、文書を保存せずに閉じられる。
というのは多くの方がご存じだと思う。

今回は、この機能?を利用した手法を紹介する。

フォームのフィールドチェックなどで、ESCで文書をクローズしたり、メニューから保存されては困るという場合に使うものだ。
なお、この方法は、ノーツクライアントでのみ有効である。

------------------------------------------------------------------
1.フォームに[保存]と[キャンセル]のアクションを作成する。
  式はそれぞれ次のようにする。
  [保存]
  FIELD FldChk := "OK";
  @Command([FileSave]);
  @Command([FileCloseWindow]);

  [キャンセル](保存しないで閉じる)
  FIELD FldChk := "OK";
  FIELD SaveOptions := "0";
  @Command([FileCloseWindow]);

2.フォームのQuerySaveイベントとQueryCloseイベントに次のように記述する。
  %include "lsconst.lss"
  Sub Querysave(Source As Notesuidocument, Continue As Variant)
   Dim doc As NotesDocument
   Set doc = Source.Document
   If doc.FldChk( 0 ) <> "1OK" Then
   Msgbox "文書を閉じるには、アクションボタンで実行してください。", MB_OK + MB_ICONINFORMATION, "文書の保存"
   Continue = False
   End If
  End Sub

------------------------------------------------------------------

キーボード操作でノーツクライアントを利用している場合には、ちょっと使いづらくなるが、面白いと思うので、試してみて欲しい。



Lotus Notes/Domino カスタマイズとセキュリティ強化 - 株式会社エフ

2 件のコメント:

aoki さんのコメント...

コピペしてうまく動かせていないのですが。
これって、doc.FldChk( 0 ) <> "OK"で、かつ編集モードにするたびに"OK"をブランクに戻したりする必要あります?初歩的な勘違いでしたら申し訳ございません。

Masahiko Miyo さんのコメント...

aokiさん
コメントありがとうございます。
おっしゃる通りです。
編集時にFldChkの値を"OK"以外にしておく必要があります。
また、このサンプルはちょっと間違いがありましたので、修正しておきました。