データベースに可変長で大量の複数行テキストデータが含まれている場合、レポートの表示域も可変になる場合があります。
実際にはレポートサイズが存在することから、改ページ位置などの調整を行うのが一般的に必要な作業です。
本記事では、FastReportでどのように調整を行うのが良いかについて解説しました。
ドリームハイブの山本です。
FastReportで複数行のテキストの表示方法についてと、
それの外観を決める上で大事なプロパティについてお話しいたします。
使うデータはBIOLIFEです。
表示してみると、このデータの中には魚の情報の中にNOTES、メモ情報が、複数行のテキストが入っているフィールドがあることがわかります。
これを表示してみようというものです。
データは、BiolifeTableというConnectionオブジェクトから経由したTableオブジェクトに接続され、これがfrxDBDataSetのデータセットに接続された状態でfrxReportに読み込まれるようになっています。
ダブルクリックしてレポートの編集モードに入ります。
FastReportでは、レポートデータの中に設定されたfrxDBDataSet1が読み込まれてることがわかります。
右側のデータツリーからでもわかるでしょう。
ではここで、データセットの読み込みなのですが、データバンドとしてマスターデータをまず、DBDataSet1を読み込ませた状態にします。
少し高さを広げて、始まりの位置がわかるように名前をまず配置し、大きくした後、配置し、続いて今回の対象である複数行テキストの入っているNOTESをドラッグします。
大きさ、少し大きくしておくんですが、この中には全てのデータが入るような大きさではありません。
ちょっとわかりやすくするために、1回周りの線を設定しておきます。
特に、下部の線がわかるように、ちょっと赤を入れておきましょう。
このような状態でまずレポートができましたので、プレビューしてみます。
こうして見ると、全部のデータが枠の中に収まらないので、下の赤線の部分がきれいに連続した情報として見えているのですが、これだと長いデータが入っている情報が見えないですよね。
なので、これの調整をするための、つまり外観を整えるためのプロパティを見ていきたいと思います。
1回閉じます。
まずは、テキストオブジェクト、メモを表示する場合、1つはAutoWidthプロパティです。
これをTrueにすると、プレビューします。
このように、バンドオブジェクトの位置にかかわらず、横の幅が1行が改行されない状態で、ずっと横に長くするような、こんな動きをします。
ただ、一般的には右側に図オブジェクトなどを挟むと思いますので、あまり使えるプロパティではないのかな、というのが正直なところです。
これも1回閉じます。
AutoWidthをFalseにします。
続いて、もう1個のプロパティがあります。
それは何かと言うと、テキストオブジェクトの中には、StretchModeというものが、プロパティがありまして、標準ではDon’tStretchになってるんですが、それ以外にActualHeightとMaxHeightというのがあります。
ActualHeightというのは、テキスト全体が入るスペースを開けるためにオブジェクトを引き延ばすんですね。
だから、すべてのテキストが収まるようにテキストオブジェクトの高さを調整するものです。
それに対して、MaxHeightというのは、現在含まれているオブジェクト、つまり今回の場合だったら、マスターデータが含まれているバンドオブジェクトのいっぱいいっぱいまで高さを引き延ばすという、そういうStretchModeを選択することができます。
今回は、全部を表示するActualHeightを選んでみましょう。
この上で、またプレビューを押してみると、どうやら、すべてのテキストを入れると、かなり下に延びるということがこの表示結果からわかると思います。
でもこれって、結局作りたいテキストに応じて、高さがこれだけ、こうずれてしまうとあまり美しくありませんね。
そこでもう1個、外側のテキストオブジェクトを配置しているバンドオブジェクト、ここにあるStretchedプロパティをTrueにします。
そして、プレビューを見ていただくとわかるのですが、データがたくさん含まれているものであれば、その高さに合わせてバンドオブジェクトそのものの高さがストレッチされるんですね。
引き延ばされるんですね。
なので、これを使うとActualHeightプロパティをONにし、さらにバンドプロパティのバンドオブジェクトのStretchedをTrueにすることによって、たくさんのメモが入っている時には、バンドそのものの長さを高くするし、あまり入っていないオブジェクトの時には、バンドの高さが、やはりテキストオブジェクトの最大のサイズに変わる、というような、このような動きをすることで、高さ、特にこのメモのような、どれぐらいの分量が入っているかわからないようなオブジェクトが含まれても、きれいにレポートを出力するということができるようになります。
かっちりとしたフォーマットの場合は、このプロパティ、ActualHeightではなく、MaxHeightを指定した方がいいのですが、一覧性の高いレポートを作る場合などには、今のプロパティをActualHeightとStretchedを両方ともTrueにするという方法なんかが取れることがわかると思います。
これらはレポートの種類に合わせて、うまくこれらのプロパティを組み合わせていただければと思います。
本日は、以上です。