データの分割
このレポートの特性を見てみましょう。ページの下部に大量の余白があります。なぜでしょう?
レポートが作成されるとき、FastReport エンジンはページの余白をバンドで埋めます。各バンドを表示した後、現在の位置が下へ移動します。
FastReport は、次のバンドを表示するのに十分なスペースが残っていない(バンドの高さがページの余白よりも大きい)とわかると、新しいページを形成して、そこからバンドの表示を続けます。このシーケンスは、データセットにレコードがある限り何回でも続けられます。
レポートに大きなテキストを持つオブジェクトが含まれていることが原因で、バンドの高さがかなり大きくなっています。その上、大きなバンドは、ページ上に十分なスペースがない場合には次のページへ移されるため、下図で示されるように、ページの下部に多くの未使用スペースが残ることになります。
用紙の無駄を抑えるために、バンドの内容から段落を作る FastReport の機能を使ってみましょう。必要なのは、「第 1 レベルのデータ」バンドの AllowSplit
プロパティを有効にすることだけです。レポート ページの下部の余白が少なくなったのがわかります。
バンドの分割はどのようにして働くのでしょうか?FastReport には、この機能をサポートするオブジェクトがいくつかあります。テキスト、線、およびリッチ テキスト オブジェクトがそうです。これらは「分割」することができますが、それ以外のオブジェクトはできません。バンドの分割が必要になると、FastReport は次の方法でそれを実行します。
余白に入る余地がある、分割できないオブジェクトを表示する。
分割できるオブジェクトを部分的に表示する(テキスト オブジェクトは、すべての行がそのオブジェクト内に入るように表示されます)。
新しいページを作成し、バンド内のオブジェクトの表示を続行する。
分割できないオブジェクトが余白に入らない場合は、それを次のページへ移す。同時に、その下に配置されるすべてのオブジェクトが必要に応じて移動される。
バンドのオブジェクトがすべて完全に表示されるまで処理を続行する。
次の例を見ると、分割アルゴリズムがより明確になるでしょう。
留意すべき点は、分割アルゴリズムは完璧ではなく、最終出力が期待どおりにならない可能性があるということです。分割バンド上のオブジェクトが複雑な方法でグループ化されていたり、フォント サイズが異なっていたりする場合には、十分注意してこのオプションを使用してください。生成される可能性のある例を以下に示します。