サブフォームは、オブジェクトのアンカー設定、レイアウト、および位置関係の管理ができるフォームデザインのセクションです。サブフォーム内のオブジェクトは、行や列に並べるなど、バランスよく整列させることができます。
1 つのフォームデザインに複数のサブフォームを使用できます。サブフォームは別のサブフォームの中に配置できます。この関係は階層パレットに表示されます。
サブフォームは各セクションにフォームを整理するために使用されます。また、データ量に応じて自動的に拡大縮小されるセクションが含まれるフォームを作成する場合に使用することもできます。サブフォームを拡大可能に設定すると、フォームのレンダリング時に、マージされたデータ量に応じてフォームのレイアウトが変更されます。サブフォームでは、データをマージすると、オブジェクトとそのデータが相互関係を維持したままで配置されます。サブフォームは、XML データのデータ階層に一致させるために使用できます。
固定レイアウトのフォームをデザインしている場合は、デフォルトのサブフォームによりオブジェクトの位置が自動的に決まるので、複数のサブフォームを使用する必要はあまりありません。
サブフォームのプロパティを操作するには、オブジェクトパレットの「サブフォーム」タブと「連結」タブを使用します。次のプロパティを定義できます。
-
サブフォームに意味のある名前を付ける(推奨)
-
データのマージ時に、サブフォームが改ページをまたがるようにするか、サブフォームを強制的に次のページにレンダリングさせる
-
サブフォームを前のサブフォームの後に配置するか、指定のコンテンツ領域に配置するか、または指定のマスターページに従って形式設定されたページ上に配置するかを指定する
-
サブフォームを前のサブフォームと同じコンテンツ領域に配置するか、次のサブフォームと同じコンテンツ領域に配置するかを指定する
-
サブフォームを配置した後の、マージしたデータのフロー順を指定する
-
フィールドを表示、非表示または隠すのいずれかに定義する
-
サブフォームのロケールを指定する
-
サブフォーム内のいずれかのオブジェクトに一意のデータアイテムが割り当てられるたびに、そのオブジェクトを繰り返すかどうかを指定する
-
オブジェクトのレンダリングを繰り返すことができるサブフォームに対して、必要に応じて、オーバーフローリーダーやオーバーフロートレーラーを作成する
-
連結メソッドを指定して、サブフォームのオブジェクトをデータにマップする方法を制御する
すべてのフォームにはルート(親)サブフォームが入っています。階層パレットでは、ルートサブフォーム(form1)が最上位ノードとして表示され、デフォルトのページのサブフォーム(名称未設定サブフォーム)がルートサブフォームの子ノードとして表示されます。
Designer では、ページ全体に適用される、マスターページのデフォルトのコンテンツ領域にサイズと位置が対応したデフォルトのサブフォームが、すべてのページに自動的に追加されます。この後にページに追加するサブフォームはすべて、階層パレットのデフォルトのページのサブフォームの下に階層化されて表示されます。
階層パレットでは、各サブフォームはノードで表され、サブフォームに含められたオブジェクトはサブフォームノードの下に表示されます。サブフォームの子には、サブフォームレベルで加えられた変更は継承されません。各オブジェクトのプロパティを個別に定義する必要があります。
発注書サンプルを見てみると、ルートサブフォームである form1 が最上位ノードの位置に表示され、その下にデフォルトのページのサブフォームである purchaseOrder が、ルートサブフォームの子として表示されています。オブジェクトをページに含めるために使用されたその他のサブフォーム(header、detailHeader、detail および total)は、ページのサブフォームの下に階層化されています。階層パレットでは、それぞれのサブフォームがノードで表され、サブフォームに含まれたオブジェクトが各ノードの下に表示されます。