サブフォームを使用する

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

サブフォームを作成する

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

  1. 開いているデータベースで、アプリケーションナビゲータの [共有要素] - [サブフォーム] をダブルクリックして [新規サブフォーム] をクリックします。または、[ファイル] - [新規] - [サブフォーム] を選択することもできます。
  2. [新規サブフォーム] ダイアログボックスで名前を割り当て、必要な場合はアプリケーションを選択して [OK] をクリックします。
  3. サブフォームを設計します。サブフォーム上で、フィールドテキスト、その他の設計要素を作成します。
  4. [設計] - [サブフォームのプロパティ] を選択します。[サブフォームのプロパティ] インフォボックスが表示されます。
  5. (オプション) コメントを入力します。
  6. 次の中からサブフォームの表示オプションを選択します。

    サブフォームのプロパティ

    使い方

    [サブフォームの挿入] ダイアログに含める

    サブフォームの挿入時にサブフォーム名が表示されます。[サブフォームの挿入] ダイアログボックスにサブフォームを表示しないようにする方法では、セキュリティは保護されません。[設計者] 以上のアクセス権を持つユーザーは、Domino Designer にある任意のサブフォームを開いて、個々の要素をコピーできます。このオプションは、計算結果のサブフォームには適用されません。

    [フォームの作成] ダイアログに含める

    このオプションを選択すると、設計者が [作成] - [設計] - [フォーム] を選択した直後にサブフォームが表示されます。このオプションは、計算結果のサブフォームには適用されません。

    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 を作成するとします。その際、[返答] フォームに対する新しいデータソースを作成するため、編集ボックスをページにドラッグアンドドロップして [件名] フィールドにデータバインドしようとしましたが、ドロップダウンリスト内に [件名] フィールドがありません。

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