アプリケーションの設計


例:列にプログラムを追加する
次の例では、一般的な列のプログラム技法をいくつか紹介します。

フィールド値に基づいて文字を判別する
条件に応じて、任意の文字列を列に表示できます。たとえば、売上高が一定額を超えた場合に特定の文字列を表示する式を作成できます。次の式は、[Sales_February] フィールド (数値フィールド) の値を調べ、その値に応じて文字列を表示します。

@If(Sales_February>60000;"Great month!";"")

フォーム名に基づいて文字を判別する
[メール (6)] テンプレートの [すべての文書] ビューにある [件名] 列では、次の式が使用されています。これは、文書を作成するときに使用したフォームに基づいて件名を表示します。

@If(Form = "NonDelivery Report"; "DELIVERY FAILURE:" + FailureReason; Form = "Delivery Report"; "DELIVERED:" + Subject; Form = "Return Receipt"; "RECEIVED:" + Subject; Form = "ReturnNonReceipt"; "NOT RECEIVED:" + Subject; Subject)

テキストと日付を組み合わせる
スケジュール用データベースの列には、テキスト値とフィールド値を組み合わせることによって、文書に関する詳しい説明を追加できます。次の式は、2 つの形式でテキストメッセージと日付を表示します。どちらの形式を使うかは、[Sched] フィールドの値によって決まります。@Text 式の [D1S0] 部は、フォーマット用のオプションです。この指定により、時刻を省略して日付フィールドの月日の部分だけを表示するので、ビューからは余分な情報が取り除かれます。

@If(Sched = "Special schedule"; "Special schedule for the week of:" + @Text(Date; "D1S0"); "My regular schedule, as of " + @Text(@Modified; "D1S0"))

テキストと名前を組み合わせる
次の式では、要求の状況に応じて、3 種類の結果になります。

@If(Status="Rejected";"Rejected by " + LastApproveName; SignatureCount=0; "Original Request";"Approved by " + LastApproveName)


文書の作成日を表示する
[文書ライブラリ] テンプレートの [作成者別] ビューの [作成日] 列には次の式が使われています。その結果、文書の作成日が表示されます。

@Created

展開可能なレベル (シンプルファンクションのバリエーション)
シンプルファンクションの [省略/展開 (+/-)] は、引数を指定しない形式で @IsExpandable を使います。文書に返答文書があればプラス記号 (+) を表示させて、返答文書が展開されたときにはマイナス記号 (-) を表示させないようにするには、次の式を使います。

@IsExpandable("+";"")

1 つの列に 2 つのフィールドの値を表示する
名前と電話番号を 1 つの列内にまとめて表示したい場合は、昇順 (アルファベット順の場合に推奨) でソートされる列を 1 つ作成します。次の式では、名前と電話番号がまとめて表示され、2 つのフィールド値が空白で区切られます。

Name + " " + Phone

「見せかけ」のインデントを作成する
IBM(R) Lotus Notes(R) で返答文書にインデントを付ける場合、インデントは常に同じです。ビュー内のインデントを設定していない状態にして、さらに、返答文書を使用せずに列の値をインデントされているように表示したいことがあります。たとえば文書のタイトルを同じ列内にインデントを変えて表示する場合です。これはちょっとした工夫で実現できます。各文書をどのようにインデントするかを、フォーム上のフィールドを使って設定します。そして列式を使って、ビューに表示される文書のタイトルに空白文字を追加します。次の式は、Indent フィールドの値に応じて、3 種類の方法で文書を「インデント」します。たとえば、Indent フィールドの値が 2 の場合は、文書の [Subject] フィールドの値の前に 18 個の空白文字を付けて列に表示します。

@If(Indent = 1; @Repeat(" "; 12) + Subject; Indent = 2; @Repeat(" "; 18) + Subject; @Repeat(" "; 6) + Subject)

文書に番号を付ける
[作成者別] ビューで次の式を使うと、各作成者のカテゴリの中で文書ごとに 1.、2.、3. という番号が付けられます。

@IsCategory("";@DocNumber("") + ". ")

行が 1 つのカテゴリ (作成者名) になっていると、@IsCategory により NULL 文字列 ("") が返されます。行が 1 つのカテゴリになっていない場合は、各行が 1 つの文書を表示し、@DocNumber によって、文書のエントリ番号を表す文字列が返されます。文書の正確なエントリ番号は、1.1、1.2、1.3 などのようになります。ただし、NULL 文字列 ("") と併用されると、@DocNumber により、エントリ番号の右端部分が返されます。その結果には、式の指定により番号の後ろにピリオドと空白 (". ") が追加されます。

プログラムで列の色を設定する
Lotus Notes Client のアプリケーションでは、[列のプロパティ] インフォボックスの [情報] タブにある [色で値を表示] オプションを選択してからプログラムペインで列の値として RGB 座標を指定することにより、プログラムから列の背景色と文字色を設定できます。

メモ この機能は Web 上でサポートされますが、色の RGB 座標を番号リスト (例: 255:0:255) で指定する必要があります。文字色の値 (例: "FF00FF") はサポートされません。

1 セットの座標 (コロンで区切られた 3 つの数値) を指定すると、その色でテキストの外観が定義されます。2 セットの座標 (コロンで区切られた 6 つの数値) を指定すると、最初の座標セットで列の背景色が定義され、2 番目の座標セットで文字色が指定されます。指定した色は、別の色が設定されるまで、値を設定した列とその右側にあるすべての列に適用されます。

メモ 色を -1:-1:-1 に設定すると、ビューと列のプロパティに戻ります。

たとえば、次の式では、1 つのセットと 2 つのセットの両方で RGB 座標を使用する方法が示されています。

red := 255:0:0;
blue := 0:0:255;
yellow := 255:255:0;
pink := 255:193:253;
white := 255:255:255;
black := 1:1:1;
apricot := 255:155:133;
plain:= 0:0:0;

@If (category = "cats";blue:red ;subcategory = "collars";pink;subcategory ="leashes";black:plain;0:0:0);

メモ 色の名前を定義する必要はありません。数値の組み合わせを直接式に入力できます。しかし、色を定義すると作業が分かりやすくなり、同じ色を何度も使用する場合に入力ミスの可能性を減らすことができます。色を定義すると、数値の組み合わせではなく語を使いやすくなりますが、色の列のセットにデータ自体は表示されません。たとえば、カテゴリ「cats」を赤で表示するには、このカテゴリを表示するための後続列を設定する必要があります。

列の値を、RGB 座標を指定するフィールドの値に等しくすることもできます。カラーフィールドとともにこの機能を使用すると、ユーザーはカラーピッカーで色を設定できます。これにより、たとえば列の中のテキストなどの、ビューの要素に色を指定できます。ビューの色をカスタマイズ可能にする機能の使用については、「ユーザーがビューで色を設定できるようにする」を参照してください。