FastReportで表を作るテクニック(外枠のみや可変高の表を作る)



データベースのデータを枠線付きの表形式でレポートを作りたい場合、枠線の種類によってデータバンドの使い方が変わります。

また、可変長データを扱う場合にはセルの大きさも変わるため、枠線のサイズも合わせて変更する必要があります。

そのような設定を行うためのプロパティについてのテクニックについて解説しました。

こんにちは。
ドリームハイブの山本です。

本日は、表の形式でデータを表示する方法についてお伝えします。

まず、画面上では、dbdemosというインターベースのデータを取るために、コネクションを経由したクエリーオブジェクトを用意し、それをfrxDBDataSetにDataSetとして登録して、frxReportを配置した状態です。

レポートデザイナを開いていただくと、すでにDataSetは登録してありますので、あとはここにデータを作り込んでいくというような、そんな流れでいきます。

データを登録するのは、もう今までと同じで、まず、繰り返しデータをセットするためのマスターデータですね。

これを用意し、ここに、データを配置していきます。

この時に、配置するデータなんですが、この高さとか、トップの位置をきちんと、いっぱいいっぱいまで調整しておくというのが、きれいな表を作る時のポイントです。

同じように、名前、COMMON_NAMEを用意し、縦をぴたっと合わせます。

あと、Lengthぐらい出してみますか。

これらをセットしたら、表示したいものをセットしたら、表の外観として、線を1本、引いてみます。

1個1個の線を設定しても構いません。
このツールバーから設定しても構いませんし、それ以外に、Frameというプロパティの中で1本1本、細かいトップだとかボトムだとかという線を太さとか色とかを変えながら設定しても良いでしょう。

これをやると、プレビューを見ていただくとわかるとおり、表としての形状を作り出すことができます。

ほとんどの表を作るのは、この方法で良いと思います。

この中で、例えば、今のバリエーションとして、線を下線部にしか引かないというようなことをすれば、もう行単位でできているような、こういう横線のみの表を作ったりすることも簡単にできるということなんですが、1個、全体の枠だけ色を変えたいとかっていう場合には、ちょっと手間が必要です。

それはなぜかと言うと、繰り返しデータを使って作ってしまうがために、1番上の行だけ、とか、1番下の行だけ、というのを、プログラムを組まずにやろうとすると、ちょっと面倒臭いんですね。

なので、マスターデータ以外のバンドとして、レポートのタイトルと、レポートの概要というのを付け加えることによって、ここに対して線を引くことで、今の動きを変えたいと思います。

これらの表の、わかりやすくするために、全部罫線をなくした状態で見てみると、ない状態ですね。

この1番上の部分だけ表を作るときには、線を作るときには、実はテキストオブジェクトを使うと簡単なんですね。

FastReportには、線オブジェクトというのもあるんですが、描画用の線オブジェクトもあるんですが、それを使うよりも、このテキストボックスをきちんと配置してあげたほうが、実は簡単に線が引けるという、そういう特徴があります。

これに対して、まずは1番、下線を引いたものと、もう1個は、同じように、テキストオブジェクトを使って、このテキストオブジェクトに対して、1番上に線を引くというようなことをやります。

ちなみに、もしちょっとでも、これがレポートの概要の内側の枠からずれていると、全然関係ないところに線が入ってしまうんですね。

このレポートの概要というデータバンドとは関係ない扱いになってしまうので、これを調整するのですが、ドラッグして調整しても構いませんし、選択した時に出てくるTop、これを、この、選択した時に出てくるこの線を、Top、これを調整してあげるというやり方でも良いでしょう。

というか、こっちの数値で入力した方が絶対楽ですね。

そうすると、今ちょっと、ざっくり、ずれちゃってますが、1番上と1番下が、それぞれ作れることがわかります。

あとは、各セルの左側と1番最後の部分を右側に設定してあげると、ちょっとごめんなさい。
長さ、左右を調整しないまま、やってしまいましたが、きちんと、こういう四角の外枠だけが作れたことがわかるでしょう。

あとは、色とか、そういうものを調整していけば良いかと思います。

そして、3点目は、NOTESという、たくさんのデータが入っているデータを使う場合にはどうするればいいかというお話をちょっとしたいと思います。

大きさを広げて、ちょっとわかりやすくするために、1回、このまま見てみると、要は1個のセルというか、1個の位置に収まりきらないデータをどのように考えれば良いかと言うと、ちょっと他のやつも、罫線として線を入れておきますが、要は、このデータを単純にStretchModeをActualはMaxHeightに設定して、データバンドそのもののStretchedをTrueにした状態、こうすると、確かに、データ自体は読まれて表示されるんですが、見てわかるとおり、この行の高さに足りていないデータは、そのままの状態で残っちゃうんですね。

これって、表としてはちょっと美しくないですね。

では、どうすればいいかと言うと、この他のテキストオブジェクトも、データバンドと同じ高さになるように、StretchModeをMaxHeightにしてあげればいいんですね。

これで、表を表示させてあげると、見事に1番上から1番下まで、ちょっと横線引いてなかったので、こいつも全部、線を引いて、見てあげると、きちんと、表のいっぱいいっぱいまで、すべての列が縦に長くなるということが確認できて、きれいな表オブジェクトとして使えることがわかると思います。

これを使うことで、情報量の多いセルであったりだとか、データが入っているレポートを作る場合でも、形が崩れずに表を作り出すことができるということがわかっていただけたのではないでしょうか。

本日は、以上です。