FastReportで図オブジェクトの周りにテキストオブジェクトを回り込ませる方法



レポートのデザインによっては、図の周りにテキストを回り込ませるなどの処理が必要になる場合があります。

テキストオブジェクトには回り込みのための機能はありませんが、複数のテキストオブジェクトを繋ぐフロー機能で実現できます。

その機能の使い方について解説しました。

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

今回は、テキストオブジェクトに対して、テキストの折り返しを設定する方法についてお伝えします。

よくあるのが、図形などの周りに割り込むようにテキストを設定することなんかがあると思います。

そのテキストの回り込み設定についてなんですが、回り込みそのものを設定することはできません。

なので、複数のテキストオブジェクトを利用して、そこに流し込みをしていくというような考え方、Illustratorかなんかでテキストの配置を使ってる方はイメージがつきやすいやり方なんですけれども、そのやり方についてお伝えしたいと思います。

これは今、データベースに接続されているデータをレポート側で表示しているものです。

DataSetですね。

名前とNOTESという長いテキストと、あと画像を1個、貼り付けています。

画像のほうは、単に図オブジェクトを貼り付けて、グラフィックを指定するために、DataSetとDataFieldを指定した、こんな状態ですね。

このまま、データバンドのほうを見ていただくと、データバンド、StretchedをTrueにしていた状態でも、内側のテキストオブジェクトが、StretchModeプロパティ、Don’tStretchを指定していると、当然のことながら、実行した時にテキストオブジェクト自体は長く表示されません。

ストレッチされませんので、入っている、この最初に指定したテキストオブジェクトの枠を超えずに、下が切れてしまうという、こういう状態です。

ここで、もう1個テキストオブジェクトを用意します。
ちょっと大き目に。こんなもんですかね。
表示しまして、中身は空のままで構いません。

一応、わかりやすくするために、周りに枠を付けておきました。

では、この状態で、前の長いテキストが入っているテキストオブジェクトを選択した後、その中のFlowToというプロパティを今、新しく追加したMemo1に割り当てます。

つまり、このテキストオブジェクトの中に入っている情報があふれた場合、そのフローの先として、このテキストオブジェクトを指定したという、こんな状態です。

こちらも、新しくフロー、この流し込みされた側は、今度は長く情報を出したいと思いますので、StretchModeをActualHeightに変更してあげます。

この状態でプレビューをすると、最初のテキストオブジェクトからあふれたテキストが下に流し込みされて、それがいっぱいいっぱいまで、このデータバンドの1行分のいっぱいいっぱいまで、縦に長くされたものが、それがあとは連続するということで、一応必要なテキストが全部表示されている、中に入っているテキストオブジェクトが、テキストが、すべて表示されているという状態が作り出されたことがわかると思います。

このように、テキストオブジェクトのFlowToプロパティを使うと、長いテキストを別のテキストオブジェクトに流し込みすることができます。

注意点としては、このメインのオブジェクトというのは、リンク先のオブジェクト、今回の場合はこのMemo1よりも先にレポートに挿入されている状態にならなければいけません。

そうしないと、このフローがうまく動作しないというような状態になってしまいます。

後から追加したとか、後からこういじった場合に簡単にやる方法としては、リンク先のオブジェクトを選択して、右クリックした際に出てくる、1番下「最前面へ移動」というのをやると、前のオブジェクトの上に重ねれたというふうになりますので、この機能を使っていただくと良いかと思います。

これで、図オブジェクトを回り込ませるようなテキストの配置というのができるようになったかと思います。

請求書とか、他にも学校のレポートとかなんかには、非常に役に立つ機能ではないかと思います。

本日は、以上です。