繰り返しサブフォームおよび複数ページのサブフォームの作成

サブフォームはページ上のどこにでも配置できますが、大量のデータをフォームにマージすると、レンダリングされたページの下端を越えてサブフォームが拡大することがあります。この問題に対処するには、「コンテンツ内で改ページを許可する」オプションを選択してサーバーにサブフォームを途中で改ページさせるか、このオプションの選択を解除してサブフォーム全体をレンダリングされた次のページの先頭に強制的に配置します。サブフォームを強制的に次のページに配置すると、階層化されたすべてのサブフォームが必ず同じページ上に表示されます。「コンテンツ内で改ページを許可する」オプションを選択しない場合は、オーバーフローリーダーサブフォームおよびオーバーフロートレーラーサブフォームが必要になることが考えられます(オーバーフローリーダーおよびオーバーフロートレーラーについてを参照してください)。

データのマージ時には、サーバーでサブフォームのコンテンツがコンテンツ領域の領域内だけに配置されます。大量のデータをサブフォーム内のオブジェクトのいずれかとマージする必要がある場合、サブフォームが複数のフォームページにまたがることがあります。別のコンテンツ領域またはマスターページへのフローを明確に指示しない限り、フォームのページがいっぱいになると、サーバーで自動的にまったく同じページがもう 1 枚レンダリングされ、新しいページにサブフォームが引き続き配置されます。同じフォームに複数のコンテンツ領域またはマスターページが存在する場合、サブフォームを特定のコンテンツ領域に配置するか、指定したマスターページに従って配置するかを指定できます。

繰り返されるサブフォームを作成するには

  1. 階層パレットで、繰り返すサブフォームの親サブフォームを選択します(サブフォームについてを参照してください)。

  2. オブジェクトパレットの「サブフォーム」タブをクリックし、コンテンツリストで「フローレイアウト」を選択します。

  3. 繰り返すサブフォームを選択します。

  4. オブジェクトパレットで「サブフォーム」タブをクリックし、コンテンツリストで「配置済み」または「フローレイアウト」を選択します。

  5. 「連結」タブをクリックし、「各データアイテムについて行を繰り返す」を選択します。

  6. 繰り返し回数の最小値を指定する場合は、「最小値」を選択して関連するボックスに数値を入力します。このオプションを 0 に設定した場合は、データマージ時にサブフォーム内のオブジェクトにデータが提供されないと、フォームのレンダリング時にサブフォームが配置されません。

  7. サブフォームの繰り返し回数の最大値を指定する場合は、「最大値」を選択して関連するボックスに数値を入力します。「最大値」ボックスに値を指定しない場合、サブフォームの繰り返しの回数は無制限になります。

  8. サブフォームの繰り返し回数をデータ量に関係なく指定する場合は、「初期値」オプションを選択して、関連するボックスに数値を入力します。このオプションを選択した場合は、データが使用できないときやデータ項目が指定された「初期値」の値より少ないときにも、フォーム上に空のサブフォームインスタンスが配置されます。

    注意: 「初期値」ボックスの値は「最小値」以上で「最大値」以下にする必要があります。「最小値」に値を指定しない場合や 0 を指定した場合、「初期値」はデフォルトで 0 になります。

サブフォームが複数ページにまたがるように指定するには

サブフォームは、フォームデザインのどこにでも配置できます。ただし、大量のデータがマージされると、サブフォームはレンダリングされたページの下端を越えて拡大される場合があります。

この問題を解決するために、サブフォームの途中での改ページを有効にするか、またはサブフォーム全体のレンダリングを強制的に次のページの先頭から開始させることができます。サブフォームを強制的に次のページに配置すると、階層化されたすべてのサブフォームが必ず同じページ上に表示されます。

データのマージ時には、サブフォームのコンテンツがコンテンツ領域の範囲内にだけ配置されます。大量のデータをサブフォーム内のオブジェクトのいずれかとマージする必要がある場合、サブフォームが複数のフォームページにまたがることがあります。

フォームページがいっぱいになると、まったく同じページがもう 1 枚自動的にレンダリングされます。別のコンテンツ領域またはマスターページにフローするよう明示的に指示していない限り、新しいページにサブフォームが引き続き配置されます。同じフォームに複数のコンテンツ領域またはマスターページが存在する場合、サブフォームを特定のコンテンツ領域に配置するか、指定したマスターページに従って配置するかを指定できます。

サブフォームが複数ページにまたがるようにするには

 オブジェクトパレットの「サブフォーム」タブをクリックし、「コンテンツ内で改ページを許可する」を選択します。

このオプションを選択解除すると、サブフォーム内のオブジェクトは同一ページ上に維持されます。

オーバーフローリーダーおよびオーバーフロートレーラーについて

柔軟なレイアウトのフォームの長さはフォームにマージされるデータの量によって異なってくるので、柔軟なレイアウトのフォームは 1 ページよりも長くなることが少なくありません。オーバーフローリーダーサブフォームおよびオーバーフロートレーラーサブフォームを使用すると、複数のページにまたがって繰り返されるサブフォームを効率的に開始および終了できます。コンテンツの位置を固定するよう設定されているサブフォームはどれも、オーバーフローリーダーまたはオーバーフロートレーラーとして使用できます。例えば、発注書サンプルフォームでは、detail サブフォームがコンテンツの位置を固定してデータアイテムごとに繰り返すよう設定されています。フォームへのデータのマージ時に、最初のページに detail サブフォームのオカレンスをすべて表示するだけのスペースがない場合は、新しいページが追加され新しいコンテンツ領域に引き続きデータがフローされます。

このように複数のページにデータがフローされる場合、「前ページから続く」などの特定のテキスト、またはデータの各列ごとの説明ラベルの入った列ヘッダー行などの特殊な形式設定要素を、新しいページの 1 枚 1 枚に入れることができます。後続の各ページに列ヘッダー行を使用すると、ユーザーは簡単にフォームのページを追っていけるようになります。このような設定を行うには、各追加ページの列ヘッダー行として機能するオーバーフローリーダーサブフォームを作成します。例えば、発注書サンプルフォームでは、detailHeader サブフォームがオーバーフローリーダーとして選択されています。その結果、detail サブフォームの最初のオカレンスが生成される前に、新しいページごとの先頭に detailHeader サブフォームのコピーがレンダリングされます。

同様に、繰り返しサブフォームの最後のオカレンスが生成されてから、最後のページを除くすべてのページの末尾に情報を入れることができます。例えば、最後のページ以外のページの末尾に「次のページに続く」などのテキストを入れることができます。このような設定を行うには、オーバーフローリーダーサブフォームを作成したのと同じ方法で、繰り返しサブフォーム用のオーバーフロートレーラーサブフォームを作成します。

サブフォームが新しいページにオーバーフローすると、サーバーは次の操作を実行します。

  • 現在のページにオーバーフロートレーラーを配置する

  • 次のページにオーバーフローリーダーを配置する

  • 拡大サブフォームと拡大サブフォームの繰り返しオブジェクトの残りを新しいページにフローする

オーバーフローリーダーとは特殊な位置固定サブフォームで、ページのオーバーフローが発生すると常に次のページの先頭に表示されます。

オーバーフローリーダーは標準的な表の見出し行に似ています。見出し行は表の先頭に表示され、表内の各列に対する説明ラベルを含んでいます。表が 1 ページに収まらないときは、次のページの先頭に見出し行を繰り返し表示するように設定できます。このように設定することで、読み手が次のページに進んでも表の情報を把握しやすくなります。

オーバーフローリーダーサブフォームもこれと同じように機能します。特定のサブフォームを繰り返しサブフォームのオーバーフローリーダーとして設定すると、現在のページおよび後続の各ページの先頭には、そのオーバーフローリーダーサブフォームが繰り返しサブフォームの前に 1 度表示されます。

繰り返しサブフォームは、データマージ時に必要な回数だけ配置されます。1 ページ目がいっぱいになると新しいページが作成され、すべてのデータが収容されるまで、引き続きデータが次のページにフローします。オーバーフローリーダーサブフォームは各ページの先頭に 1 度表示されます。

Designer に付属の、データ量に応じてレイアウトが調整されるフォームデザインのサンプルにて、オーバーフローリーダーサブフォームの使用例を確認できます。このサンプル(Purchase Order.xdp)は、ユーザーのシステム上で Designer がインストールされた場所の Samples フォルダーにあります。このサンプルでは、detailHeader という名前のサブフォームが、detail という繰り返しサブフォームのオーバーフローリーダーの役割を果たします。

ブックエンドリーダーとは、繰り返しサブフォームの前に表示されるサブフォームです。繰り返しサブフォームのすぐ上で兄弟サブフォームを定義し、それをオーバーフローリーダーに指定すると、その兄弟サブフォームはブックエンドリーダーおよびオーバーフローリーダーとなります。

オーバーフロートレーラーは、ページのオーバーフローが発生するごとに次のページの末尾に表示されます。オーバーフロートレーラーは、データをすべて配置した後に 1 度だけ表示する情報を含める場合に使用します。

ブックエンドトレーラーとは、繰り返しサブフォームのすぐ下に表示されるサブフォームです。繰り返しサブフォームのすぐ下で兄弟サブフォームを定義し、それをオーバーフロートレーラーに指定すると、その兄弟サブフォームはブックエンドトレーラーおよびオーバーフロートレーラーとなります。

オーバーフローリーダーおよびオーバーフロートレーラーを作成し、割り当てるには

オーバーフローリーダーまたはオーバーフロートレーラーは、任意の繰り返しサブフォームに割り当てることができる位置固定サブフォームです。通常は、まずオーバーフローリーダーまたはオーバーフロートレーラーとして使用するサブフォームを作成します。その後、繰り返しサブフォームに作成したサブフォームを割り当て、オーバーフロープロパティを設定します。

オーバーフローリーダーがブックエンドリーダーとしても扱われる場合には、階層パレットでサブフォームのすぐ上に表示されます。また、オーバーフロートレーラーが同時にブックエンドトレーラーとしても扱われる場合には、階層パレットでサブフォームのすぐ下に表示されます。

オーバーフローリーダーまたはオーバーフロートレーラーを作成するには

  1. 必要なサブフォームをすべて備えたフォームデザインを作成します。

  2. オーバーフローリーダーまたはオーバーフロートレーラーとして使用するサブフォームをフォームデザイン上で探し、サブフォームを選択した上で、次の操作を行います。

    • オブジェクトパレットで「サブフォーム」タブを表示させます。コンテンツリストに「配置済み」が表示されていることを確認します。オブジェクトパレットの「サブフォーム」タブをクリックし、コンテンツリストで「配置済み」が選択されていることを確認します。

    • オブジェクトパレットで「連結」タブを表示させます。オブジェクトパレットの「連結」タブをクリックし、「各データアイテムについてサブフォームを繰り返す」を選択して、リーダーとトレーラーが複数のオーバーフローで表示されるようにします。この数には、ブックエンドリーダーおよびブックエンドトレーラーは含まれません。

オーバーフローリーダーまたはオーバーフロートレーラーをサブフォームに適用するには

  1. 繰り返すサブフォームを選択します(複数選択することもできます)。

  2. オブジェクトパレットの「連結」タブをクリックし、「各データアイテムについてサブフォームを繰り返す」を選択してサブフォームの繰り返しを設定します。

  3. オブジェクトパレットの「ページ編集」タブをクリックし、「オーバーフロー」ボックスに、フォームがオーバーフローサブフォームを配置するコンテンツ領域またはページを指定します。]

  4. オーバーフローリーダーを指定する場合、オーバーフローリーダーリストで、現在の繰り返しサブフォームのオーバーフローリーダーサブフォームとして使用するサブフォームを選択します。または、オーバーフローリーダーリストで「新規」を選択し、新しいオーバーフローリーダーサブフォームを作成して割り当てます。

  5. オーバーフロートレーラーを指定する場合、オーバーフロートレーラーリストで、現在の繰り返しサブフォームのオーバーフロートレーラーサブフォームとして使用するサブフォームを選択します。または、オーバーフロートレーラーリストで「新規」を選択し、新しいオーバーフロートレーラーサブフォームを作成して割り当てます。

    注意: オーバーフローリーダーおよびオーバーフロートレーラーの両方を使用する必要はありません。いずれか一方を使用するか、両方を使用するか、またはいずれも使用しないかは、使用するフォームの必要に応じてのみ決まります。