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

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

2009年4月24日金曜日

ビューのフォルダ列をメール以外に転用させてみよう!

今回は8.5の新機能の一つである【メールの [すべての文書] ビューのフォルダ列】について調査してみた。

これは、文書がノーツDB内のどのフォルダに存在しているのかを表示してくれるというものである。
そして、それ以上の説明がないのも特徴である。
これって、他のノーツDBに転用できないのかな?と思った人は少なからずいると思う。
では、皆さん、転用できたのであろうか?できた!という方はつまらないので、ここでお帰りいただいて結構です。


さて・・・
まずは、どのようにして実現しているのかを調査してみた。
ビューの列に表示しているので、素直にビューの列情報をみてみよう。
ふむふむ。@関数で実現しているんだ・・・
えーっ!@関数!?@WhichFoldersって・・・(下図参照)


あれ?デザイナヘルプの新機能には、こんな関数の紹介なかったよなぁ・・・
念のため、確認してみるが・・・
ありません!隠し関数かよっ!
だから、説明も何もね-のか。

これじゃぁ、どうやって使うのか分からないじゃないか!


まぁいいや。とりあえず、どこで動作するのか確認してみよう。
ということで、ビューアクションに
@Prompt([OK];"@WhichFoldersの結果";@WhichFolders)
と追加して、実行してみた。

結果は見ての通り。どんな文書を選択しても同じ結果だった。

うーん・・・どうやら列式でしか反応しなさそうだな。

では、実際に他のノーツDBに転用してみよう。
ということで、やってみました。

一からノーツDBを作るのは面倒くさいので、文書ライブラリDBをカスタマイズしてみました。
・「すべての文書」ビューの一番右の列に「@WhichFolders」の式を書いた列を追加する。
・適当なフォルダを作成する。
・幾つかの文書を選択して、作成したフォルダに移動する。

あれ???何の変化もない。なんで?


と、ここで躓きました。
この後、かなり色んな事をしました(メールにしかないビューを追加したり、フレームセットを追加したり、アウトラインを作成し直したり・・・)。

数時間後・・・

ようやく分かりました。
ポイントは、埋め込みアウトラインのプロパティです。
というのも、この機能、動作するのに条件があるのです。
埋め込みアウトラインがあるページと@WhichFoldersを記述したビューがフレームセットに表示されていることというのがその条件です。
さらに、埋め込みアウトラインのプロパティの一カ所にチェックをつける必要があります。
それが下図にある箇所「フォルダの未読情報を保存」です。


こんなもの、気がつくかぁっ!

怒りはともかく、カスタマイズした結果がこれ(下図参照)。

確かに、文書を保存した先のフォルダ名が表示されています。


それでは、今回のまとめです。
・@WhichFoldersは、メール以外のノーツDBでも利用可能
・ODSは51である必要はない(43、48で動作確認済み)
・フレームセットでノーツDBが開いていること
・フレームセットにはアウトラインページとビューページが表示されていること
・埋め込みアウトラインの「フォルダの未読情報を保存」にチェックが入っていること
・ビューの列の式に「@WhichFolders」を記述すること


ちなみに、上記のままだと、フォルダにコピーしても、ビューの表示は切り替わりません。更新するか、ノーツDBを開き直しする必要があります。
リアルタイムに反映させたい場合、
ビューのQueryaddtofolderイベントにビューをリフレッシュするコードを追記する必要があります。
Dim uiws As New NotesUIWorkspace
Call uiws.ViewRefresh
で良いでしょう。


分かっていただけたでしょうか。
これで、8.5の新機能を通常のノーツDBにも反映させられますので、是非お試しあれ。



っていうか、この機能について情報がなさ過ぎだよ!
それとも、筆者が見過ごしているだけなのだろうか?


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

0 件のコメント: