Dominoデザイナーの使い方について(2)
全四回ぐらいで一通り扱えるといいなぁ。
- フォームの作成(続き)
- フィールドやアクションに非表示を設定する。
ある条件の場合に表示したくないアクションボタンやフィールドを非表示にすることができます。
例えば[保存]ボタンは文書を表示してるだけのときは必要ないときなど。
プロパティ画面の非表示設定欄↓で、非表示の条件を指定できます。
式を書く時は、その式の結果がTrueの時に非表示になります。
非表示式は段落ごとに設定されます。1行の中で一部だけ非表示にすることはできません。
■参考−非表示式の混乱を避けるための提案
http://www.aitj.co.jp/pub/Tips.nsf/757ba379ea3582cd492566a10000742b/abdff7364bb74583492565c9005e755c?OpenDocument
- 式の書き方
・複数の式は「;」(セミコロン)で区切ります。
・値を代入する時は「:=」を使います。
例)tmp:=@UserName
・一時変数は宣言無しで使えます。
- よく使う式
・@if文
@If(条件;真のときの処理;偽のときの処理)
→入れ子にする時は、@If(条件;真のときの処理;条件;真のときの処理;偽のときの処理)。最大99入れ子。
・@UserName
今操作しているユーザ名を返します。@UserName(0)で基本名(ローマ字)のユーザ名、@UserName(1)で日本語のユーザ名が返ります。
・@Name
@UserNameで返ってくる名前は「CN=Test User/O=Notes」みたいな、システムで使う完全な名前です。
見栄えいいように調整するために@Name([CN];@UserName(1))みたいに使います。デザイナーヘルプ参照。
・@Adjust
日時情報にAdjustをかけて他の日を返します。
@Adjust(元になる日付;加減したい年;月;日;時;分;秒;)の書式。
例えば今日から3日後の日付を返したい時は、@Adjust(@today;0;0;3;0;0;0)等。
引数に-(マイナス)を指定すれば前の日付が返ります。
・@dblookup
ビューから条件に一致する文書を探して、指定したフィールドの値を返します。
@DbLookup("Notes": "NoCache" ;"サーバ名":"データベース名";"ビュー名";"検索条件";"一致した場合に戻したい値の入ってるフィールド名")
「"Notes":"NoCache"」と「"サーバ名":"データベース名"」の間は「:」(コロン)で繋がってるのに注意。他は「;」(セミコロン)。
dblookup毎に検索が入るので、一つのフォームでたくさんdblookupするとすごく重くなるのにも注意。
- 文書のタイトルを設定する。
WindowTitleを設定します。
- フィールドについて更に詳細
フィールドの種類について(型)
- テキスト
ただのテキスト。文字装飾情報は付かない。
- 日付/時刻
日付/時刻型。プロパティで「日付のみ」とか「日付と時刻」とかの表示形式を設定できる。
- 数値
数値。後で明らかに計算に使いたいようなフィールドは数値にしておく。
社員番号なんかは、入るのは全部数字でもテキスト型にしておいた方が無難。
- ダイアログリスト〜コンボボックス
選択肢を出して選ばせたい時に使用。選択肢に|つなぎで値を設定しておくと別名扱いになり、実際のデータは別名で格納される。
→試しに@dbcolumnで社員名一覧を設定してみる。
- リッチテキスト
添付ファイルを貼ったり文字色を変えたりする用の欄にしたいときに使用。掲示板の本文欄など。
- 作成者
ACLで「作成者」の権限を持っている人に個別に編集権を与えたい時に使用。この「作成者」フィールドに自分の名前が入っている文書は編集できるようになる。
名前は基本名で省略なしの形が望ましいみたい。「CN=Test User/O=Notes」みたいな。
- 読者
ACLで「作成者」以上の権限を持っている人に個別に文書の閲覧権を制限したい時に使用。このフィールドを置くと、このフィールド内に自分の名前が入ってない文書は例えACLで管理者であっても見れなくなる。(使用方注意!)
読者フィールドの値が""(空欄)だと、誰でも見れる。
また、作成者フィールドが文書に存在していて、そっちに自分の名前が入っていれば、読者フィールドに名前が無くても見れる。
- 名前
文字列をNotesの名前として認識させる。メールの宛先欄とかで使うかも。
- パスワード
入力した文字列を画面に表示させない。それ以外は普通のテキストと同じ(と思う)。
フィールドの種類について(入力タイプ)
- 編集可能
画面上に『 』みたいな感じで入力欄を出して、ユーザが編集可能。
DefalutValueに値を入れておくと既定値として表示できる。
- >計算結果
ユーザの編集不可。データは文書に記録される。計算結果系のフィールドは、valueに必ず式が必要。
(他から値を設定したい時はvalueには自分のフィールド名を入れとく。)
→承認WorkFlowのステータス表示とか。
- 表示用の計算結果
ユーザの編集不可。データは文書に記録されないで、文書を開くたびに再計算される。
→コンボボックスの情報を読み込みモードで表示する時にきれいに表示したいときとか(非表示式と併用したり)。
- 作成時の計算結果
ユーザの編集不可。文書を作った時に1度だけ計算されたデータが文書に記録される。以降は更新されない。
→作成者情報を埋めておきたい時とか。
この型と入力タイプを組み合わせていろいろ制御します。
※注意事項
・データを文書に保存していないとビューとかで表示することはできない。
・計算結果は文書を開いて更新をかけて保存しないと新しい内容に置き換わらない。
- ビューの作成(続き)
- カテゴリの合計を表示する列を作る。
合計を表示したいカテゴリの右側に1列追加して、「列の値」に「1」を設定しておくと合計が出る。
「詳細を非表示」にしておくと見栄えがいい。
- 条件に合う文書だけ表示する。
「ビューの選択」に条件式を記述します。Select @allで全部表示。
Select form="Main"とかで、formフィールドの値が"Main"のものだけとか選んで表示できます。
(formフィールド:特に画面上に作成しなくても勝手にその文書のフォーム名が入る)
- 値をアイコンで表示する。
列のプロパティで「値をアイコン表示」にチェックして、列の値にアイコン番号を返す式を入れる。
アイコン番号については、Dominoデザイナーヘルプの「列にアイコンを表示する」を参照。
- 非表示のビューを作る。
ビュー名を()(半角括弧)で囲むと、非表示のビューになります。別名を付けていたら、別名は囲まなくてもいいです。
表示する方法もあるけど、基本的にはユーザの見る画面に出てこなくなります。
- ビューで出来ないこと
・選択式にユーザ名を書く。
→選択式はサーバ上で評価されるので、ユーザ名での識別は不可。
「自分の作った文書だけ」とかは出せない。但し、個人ビューや埋め込みビューを使えば可能。
・文書にない情報を表示させる。
→文書の中の情報の計算で出るものはビューの列式で同じ計算させれば表示可能。他の文書を見ないと出ないものはダメ。
・行の色を変える。
行の色を変えることは出来ません。列単位では色が変えられます。
- その他の設計要素−ナビゲータ
よく画面の左側に遷移用のボタンを置いて、右側にビューを表示したりするような時にナビゲータを使います。
hotspot付きのボタンを簡単に配置することができます。
でも、ナビゲータに置いたボタンの表示/非表示は設定できません。
- その他の設計要素−フレームセット
フレームを切って情報を表示させることができます。
フレームのプロパティの内容で「名前つき設計要素」でナビゲータとかビューとかを指定します。
名前付き設計要素の指定欄で式を使って、アクセスした人ごとに異なる画面を出したりできます。(管理者用と一般ユーザ用とか)
フレームに名前を付けて、「フレーム内のリンクのデフォルト対象」でターゲット用のフレームの名前を指定すると、左側のボタンを押した時に右側を更新するとかの制御ができます。
(ナビゲータのボタンの中で@SetTargetFrameする時にもこの名前を使います)
- その他の設計要素−アウトライン
サイトマップみたいなのを作りたい時に利用します。設計要素をツリー構造で簡単に表現できます。
アウトライン単独では画面に表示できないので、アウトラインを作ったらページに埋め込んで使います。
- その他の設計要素−ページ
フィールドを持たないフォームみたいなものと思っていていいです。でもユーザがcreateすることはまず無いです。
アウトラインを表示したいときは、ページの中で[作成]−[埋め込み設計要素]−[アウトライン]を指定します。
フォントサイズとかいろいろプロパティがあるので、「アウトラインのプロパティ」で調整してみてください。
- その他の設計要素−フォルダ
ビューと似たような感じだけど、ビューは全体の中から選択式で文書を選んで表示するのに比べて、フォルダの方は、(手動またはスクリプトで)フォルダに入れた文書だけを表示する感じ。あまり使ったことない。
- エージェントについて
画面上で一つ一つ処理するのが面倒な作業などを一括で実行するためにエージェントが利用できます。
シンプルアクション、@式、LotusScriptが利用可能。試しにシンプルアクションでフィールド値の更新してみる。
→次回はLotusScriptについても取り扱いたいものです。
- 参考リンク
LotusScript入門
http://www2.ocn.ne.jp/~notes/devtop.html#lotus
Tips for Notes and Domino
http://www.aitj.co.jp/Pub/Tips.nsf
Domino懇談室(05/12現在閲覧のみ)
http://nmag.softbankpub.co.jp/nmagdisc.nsf