アプリケーションの設計


サブフォームを使用する
サブフォームとは、単一のオブジェクトとして保存されているフォームの要素の集まりです。 サブフォームには、通常のフォームと同じ要素を含めることができます。サブフォームを使用すると設計を変更する時間を短縮できます。サブフォームのフィールドを変更すると、そのサブフォームを使用するフォームもすべて更新されます。サブフォームのよくある使用例は、ビジネス文書への会社のロゴの追加や、宛先ラベル情報のメールやメモフォームへの追加です。サブフォームは、フォームの固定部分として設定することも、式の結果によって表示と非表示を切り替えることもできます。たとえば、メモ、警告、レターなどの各種のメールメッセージにそれぞれの図形およびスタイルを提供するカスタムメールの選択肢をユーザーに提供できます。サブフォームで使用されるフィールド名は、フォームの他の場所では使用できません。サブフォームに対する変更は、そのサブフォームを使用するすべてのフォームと文書に影響します。

サブフォームを作成する

必要なサブフォームに類似するサブフォームをコピーして修正することも、新規にサブフォームを作成して設計することもできます。

1. 開いているデータベースで、アプリケーションナビゲータの [共有要素] - [サブフォーム] をダブルクリックして [新規サブフォーム] をクリックします。または、[ファイル] - [新規] - [サブフォーム] を選択することもできます。

2. [新規サブフォーム] ダイアログボックスで名前を割り当て、必要な場合はアプリケーションを選択して [OK] をクリックします。

3. サブフォームを設計します。サブフォーム上で、フィールドテキスト、およびその他の設計要素を作成します。

4. [設計] - [サブフォームのプロパティ] を選択します。[サブフォームのプロパティ] インフォボックスが表示されます。

5. (省略可能) コメントを入力します。

6. 次の中からサブフォームの表示オプションを選択します。
サブフォームのプロパティ使い方
[サブフォームの挿入] ダイアログに含めるサブフォームの挿入時にサブフォーム名が表示されます。[サブフォームの挿入] ダイアログボックスにサブフォームを表示しないようにする方法では、セキュリティは保護されません。[設計者] 以上のアクセス権を持つユーザーは、IBM(R) Lotus Domino Designer(R) にある任意のサブフォームを開いて、個々の要素をコピーできます。このオプションは、計算結果のサブフォームには適用されません。
[フォームの作成] ダイアログに含めるこのオプションを選択すると、設計者が [作成] - [設計] - [フォーム] を選択した直後にサブフォームが表示されます。このオプションは、計算結果のサブフォームには適用されません。
Lotus Notes パススルー HTML を解釈するサブフォームに直接 HTML を貼り付けることができます。HTML の貼り付けについて詳しくは、「ページの設計」の章のトピック「ページまたはフォームで HTML を使用する」を参照してください。
インデックスにフィールド名を追加しないサブフォームの新規フィールド名がフィールドの索引に保存されないようにするには、この設定をオンにします。この設定をオンすると、メモリが保存されます。

この設定をオンにしないと、フィールド名がいったん表に保存されてからメモリに保存されます。メモリにフィールド名を保存すると、[アクションの追加] ダイアログボックスなどの場所でもフィールド名を表示できます。


フォームにサブフォームを挿入する

1. フォームを開きます。

2. サブフォームを挿入する位置にカーソルを合わせます。

3. [作成] - [リソース] - [サブフォームの挿入] を選択します。[サブフォームの挿入] ダイアログボックスが表示されます。

4. 挿入するサブフォームを選択してから、[OK] をクリックします。[データベース] プルダウンリストにあるデータベースを選択すると、他のデータベースに含まれているサブフォームを挿入することもできます。

フォームに計算結果のサブフォームを表示する

1. フォームを開きます。

2. サブフォームを挿入する位置にカーソルを合わせます。

3. [作成] - [リソース] - [サブフォームの挿入] を選択します。

4. [式の定義によりサブフォームを挿入] を選択します。

5. [OK] をクリックします。

6. 表示するサブフォームを設定する式を、プログラムペインに入力します。

7. フォームを閉じ、フォームに名前を付けて保存します。

計算結果のサブフォームの表示例

ディスカッションデータベースの [メイントピック] フォームに、新規文書が作成されたときにサブフォーム「NewDocSubform」を表示し、既に保存されている文書が開かれたときにサブフォーム「SavedDocSubform」を表示します。また、NewDocSubform と SavedDocSubform には同じフィールド、または同じ図形が使用されていないものとします。この場合のサブフォーム挿入式は、次のようになります。

@If(@IsNewDoc;"NewDocSubform";"SavedDocSubform");

メモ サブフォーム式は文書が開いているときは更新できません。

サブフォームを削除する

削除されたサブフォームを参照する文書を開くと、「サブフォーム: <サブフォーム名> がロードされていません」というメッセージがステータスバーに表示されます。この場合、文書を開くことはできますが、削除されたサブフォームは表示されません。削除されたサブフォームを参照する文書を開くと、「サブフォーム: <サブフォーム名> がロードされていません」というメッセージがステータスバーに表示されます。またフォーム上で、削除されているサブフォームの挿入位置をクリックすると、「文書が無効またはありません。」というメッセージが表示されます。この場合、設計者はサブフォームを開くことはできません。

これらのメッセージが表示されないようにするには、データベースに他のサブフォームを追加して、このサブフォームに、削除されたサブフォームと同じ名前を付けます。

フォームからサブフォームを削除する

各フォームからサブフォームを削除できます。削除するサブフォームを使用している他のフォームには、影響を与えません。

1. フォーム上のサブフォームの領域をクリックします。

2. [編集] - [削除] を選択します。

3. 必要に応じて、配置を調整します。

データベースからサブフォームを削除する

データベースからサブフォームのすべてを削除できます。データベースからサブフォームを削除すると、このサブフォームを参照するフォームではエラーが発生するため、注意が必要です。

1. データベースの設計リストで [共有要素] - [サブフォーム] をクリックします。

2. [編集] - [削除] を選択します。

サブフォーム、XPage、およびデータバインド

XPage でサブフォームを使用している場合、この XPage に含まれるサブフォーム内のフィールドにデータをバインドすることはできません。

たとえば、ディスカッションテンプレートを使用して新しいアプリケーションを作成し、新しい XPage を作成するとします。その際、[返答] フォームに対する新しいデータソースを作成するため、編集ボックスをページにドラッグアンドドロップして [件名] フィールドにデータバインドしようとしましたが、ドロップダウンリスト内に [件名] フィールドがありません。

これは、[件名] フィールドが設定されたサブフォームが [返答] フォームに含まれているためです。フィールドにバインドするには、[データのバインド] フィールドにサブフォームの名前を手動で入力する必要があります。