柔軟なレイアウトのフォームの長さはフォームにマージされるデータの量によって異なってくるので、柔軟なレイアウトのフォームは 1 ページよりも長くなることが少なくありません。オーバーフローリーダーサブフォームおよびオーバーフロートレーラーサブフォームを使用すると、複数のページにまたがって繰り返されるサブフォームを効率的に開始および終了できます。コンテンツの位置を固定するよう設定されているサブフォームはどれも、オーバーフローリーダーまたはオーバーフロートレーラーとして使用できます。例えば、発注書サンプルフォームでは、detail サブフォームがコンテンツの位置を固定してデータアイテムごとに繰り返すよう設定されています。フォームへのデータのマージ時に、最初のページに detail サブフォームのオカレンスをすべて表示するだけのスペースがない場合は、新しいページが追加され新しいコンテンツ領域に引き続きデータがフローされます。
このように複数のページにデータがフローされる場合、「前ページから続く」などの特定のテキスト、またはデータの各列ごとの説明ラベルの入った列ヘッダー行などの特殊な形式設定要素を、新しいページの 1 枚 1 枚に入れることができます。後続の各ページに列ヘッダー行を使用すると、ユーザーは簡単にフォームのページを追っていけるようになります。このような設定を行うには、各追加ページの列ヘッダー行として機能するオーバーフローリーダーサブフォームを作成します。例えば、発注書サンプルフォームでは、detailHeader サブフォームがオーバーフローリーダーとして選択されています。その結果、detail サブフォームの最初のオカレンスが生成される前に、新しいページごとの先頭に detailHeader サブフォームのコピーがレンダリングされます。
同様に、繰り返しサブフォームの最後のオカレンスが生成されてから、最後のページを除くすべてのページの末尾に情報を入れることができます。例えば、最後のページ以外のページの末尾に「次のページに続く」などのテキストを入れることができます。このような設定を行うには、オーバーフローリーダーサブフォームを作成したのと同じ方法で、繰り返しサブフォーム用のオーバーフロートレーラーサブフォームを作成します。
サブフォームが新しいページにオーバーフローすると、サーバーは次の操作を実行します。
オーバーフローリーダーとは特殊な位置固定サブフォームで、ページのオーバーフローが発生すると常に次のページの先頭に表示されます。
オーバーフローリーダーは標準的な表の見出し行に似ています。見出し行は表の先頭に表示され、表内の各列に対する説明ラベルを含んでいます。表が 1 ページに収まらないときは、次のページの先頭に見出し行を繰り返し表示するように設定できます。このように設定することで、読み手が次のページに進んでも表の情報を把握しやすくなります。
オーバーフローリーダーサブフォームもこれと同じように機能します。特定のサブフォームを繰り返しサブフォームのオーバーフローリーダーとして設定すると、現在のページおよび後続の各ページの先頭には、そのオーバーフローリーダーサブフォームが繰り返しサブフォームの前に 1 度表示されます。
繰り返しサブフォームは、データマージ時に必要な回数だけ配置されます。1 ページ目がいっぱいになると新しいページが作成され、すべてのデータが収容されるまで、引き続きデータが次のページにフローします。オーバーフローリーダーサブフォームは各ページの先頭に 1 度表示されます。
Designer に付属の、データ量に応じてレイアウトが調整されるフォームデザインのサンプルにて、オーバーフローリーダーサブフォームの使用例を確認できます。このサンプル(Purchase Order.xdp)は、ユーザーのシステム上で Designer がインストールされた場所の Samples フォルダーにあります。このサンプルでは、detailHeader という名前のサブフォームが、detail という繰り返しサブフォームのオーバーフローリーダーの役割を果たします。
ブックエンドリーダーとは、繰り返しサブフォームの前に表示されるサブフォームです。繰り返しサブフォームのすぐ上で兄弟サブフォームを定義し、それをオーバーフローリーダーに指定すると、その兄弟サブフォームはブックエンドリーダーおよびオーバーフローリーダーとなります。
オーバーフロートレーラーは、ページのオーバーフローが発生するごとに次のページの末尾に表示されます。オーバーフロートレーラーは、データをすべて配置した後に 1 度だけ表示する情報を含める場合に使用します。
ブックエンドトレーラーとは、繰り返しサブフォームのすぐ下に表示されるサブフォームです。繰り返しサブフォームのすぐ下で兄弟サブフォームを定義し、それをオーバーフロートレーラーに指定すると、その兄弟サブフォームはブックエンドトレーラーおよびオーバーフロートレーラーとなります。