FastReportのオブジェクトをページ間で分割させる方法



FastReportのいくつかのオブジェクトは、ページにまたがる場合に表示するデータを分割するかどうかを決めることができます。

具体例を用いて解説しました。

ドリームハイブの山本です。
本日もFastReportの情報をお届けします。

本日は、データの分割についてお伝えします。

今開いているレポートは、前回作ったマスターデータを利用したデータベースのデータを画面に表示するものです。

この中で特徴となるのが、長いテキストが入っているNOTESというフィールドを表示しているこの部分が、たくさんの情報を表す時に自動的に縦に長くなるというのを作っている状態を表してまして、マスターデータ・データバンドを見ていただくと、このStretchedプロパティがTrueになっています。

またもう1つ、NOTESというフィールドを表示しているこのテキストオブジェクトのStretchModeは、smActualHeightというふうな設定になっています。

この状態で、プレビューを選んでいただくと、このようにずらっとデータが1個1個のテキストオブジェクトが縦に長くなっているのがわかると思うのですが、ページの下部にスペースが空いていることがわかります。

同じように、下の方もまたスペースが空いていることがわかります。

この、例えばBlue Angelfishの下のスペース、ここに下の次のデータをスペースを空けずに組み入れる方法について、考えたいと思います。

これがデータの分割ですね。

やり方は非常に簡単で、このデータバンドのAllowSpritプロパティをTrueに変えるだけです。

これでプレビューをもう1回押してみると、スクロールすると、確かに先ほど隙間があったBlue Angelfishの下に、次の情報が表示されていますし、その次もページがどんどん移るにしたがって、きちんとページをまたがってデータが、テキストオブジェクトが分割された状態で続いていることが確認できるでしょう。

これらのデータというのは、分割が可能なものとして、テキスト、線、そして、リッチテキストオブジェクトが分割に対応するものです。

余分に入る余地がある場合に、自動的に分割されるというものなんですね。

ただ、この分割アルゴリズムというのは、今、これ縦に1個、連続しているデータがこのテキストオブジェクト1個しかなかったので、きれいに分割できているんですが、これが、他の入れ子になったデータバンドになっていたりとか、中に画像なんかが入っている場合には、うまく最後のページがレンダリングされないというような場合もあり得ます。

なので、そういう生成があり得る場合には、テストをきちんとしなければいけない。

そのような可能性があるということを一応、留意して使うべきものだと思ってください。

本日は、以上です。