改ページとレイアウトの制御
ここからは、改ページとレイアウトに関する設定を紹介します。
(1)KeepTogetherプロパティ
最初にKeepTogetherプロパティについて説明します。ページヘッダ/フッタ以外のセクション(Detailセクション、グループヘッダ/フッタセクションなど)にはKeepTogetherプロパティが用意されています。
この値をTrueに設定すると、基本的にセクションがページをまたがらないように表示します。つまり、ページの下端にスペースが残っていたとしても、そのスペースがセクション全体を表示するには足りない場合、セクションごと次のページに送られます。
このプロパティは、デフォルトではFalseに設定されておりますが「セクションの途中で改ページされたくない」場合には、Trueに変更してください
(2)CanGrow/CanShrinkプロパティ
セクションやTextBoxコントロールに用意されているプロパティであり、高さの自動変更を許可するかしないかを設定します。
例えば、高さが1行分、横幅が5文字分しか表示できない大きさのTextBoxコントロールに15文字の文字列を設定した場合、そのコントロールのCanGrowプロパティがTrueに設定されているとコントロールの高さが3行分に自動的に伸長します(Falseに設定されている場合、5文字分だけ表示され、残りの10文字は無視されます)。
また、セクションにもCanGrowプロパティは用意されています。セクションのCanGrowプロパティがTrueに設定されていれば、そのセクション上のTextBoxコントロールの自動伸長にあわせて、セクションの高さも自動的に伸長します。
一方、CanShrinkプロパティはCanGrowプロパティとは逆に、高さを自動縮小するかどうかを決定するプロパティです。このプロパティをTrueに設定している場合、その文字列の高さにあわせてTextBoxコントロールの高さを自動的に縮小させます。CanGrowプロパティと同様にセクションとTextBoxコントロールの両方に用意されています。
デフォルトではCanGrow=True、CanShrink=Falseとなっています。セクションの高さを一定に保ちたい場合はどちらもFalseに設定してください。またそのとき、そのセクション上に配置されているすべてのTextBoxコントロールのCanGrow/CanShrinkプロパティもFalseに設定してください。
(3)NewPageプロパティ
セクションの前か後で改ページを行うことを指定します。ページヘッダ/フッタ以外のセクションに用意されており、「None」「Before」「After」「BeforeAfter」が設定できます。
- None:改ページ制御を行いません。(デフォルト)
- Before:セクションの直前で改ページを行います。
- After:セクションの直後で改ページを行います。
- BeforeAfter:セクションの直前と直後で改ページを行います。
例えば、グループごとに改ページしたい場合には、グループヘッダのNewPageプロパティにBeforeを設定するか、グループフッタのNewPageプロパティにAfterを設定してください。
次のRepeatStyleプロパティとUnderlayNextプロパティは、グループヘッダ専用のプロパティです。
(4)RepeatStyleプロパティ
通常、グループヘッダはグループの最初に一度だけ表示されます。RepeatStyleプロパティは、グループが複数のページやカラムにまたがって出力される場合に、ページやカラムの先頭に、同じグループヘッダを繰り返し表示するかどうかを決定するプロパティです。
例えば、レポートデータソースから取得したグループ単位のデータを、各ページの見出しとして表示したい場合などにこのプロパティを使用して、グループヘッダを毎ページに表示させます(ページヘッダ上にデータソース内の値を直接表示することが、推奨されないためです)。
- None:グループヘッダの繰り返し表示を行いません。
- OnPage:改ページごとにグループヘッダを表示します。
- OnColumn:改カラム(後述)ごとにグループヘッダを表示します。
- All:改ページ、および改カラムごとにグループヘッダを表示します。
- OnPageIncludeNoDetail:改ページごとにグループヘッダを表示します。OnPageとの違いは、そのページに出力されているセクションがグループフッタのみである場合にも表示されるということです。OnPageに設定した場合、そのページに表示されているセクションがグループフッタのみである時には、そのグループヘッダが表示されることはありません。
(5)UnderlayNextプロパティ
グループヘッダと、次のセクションを重ねて表示することを指定します。グループヘッダにあるコントロールと、Detailセクションにあるコントロールを高さが同じ位置に表示できます。
例えば、前出の「注文表」では、内側のグループヘッダのUnderlayNextをTrueに設定しています。このように設定することで、内側のグループヘッダに配置されている「注文番号」と1行目のDetailセクションの「商品名」を横に並べて表示することを可能としています。
(6)RepeatToFillプロパティ
Detailセクションにのみ用意されているプロパティです。
セクションレポートの場合、ページ内に表示するべきデータが尽きると、それ以降の部分は基本的に空白になります。しかし、「表示するデータがなくても、ページの下までDetailセクションを空欄のまま表示したい」場合がございます。こうした要求仕様に応えるために用意されたのがRepeatToFillプロパティです。
このプロパティをTrueに設定すると、Detailセクションの「罫線」(Lineコントロール、Shapeコントロールや、TextBoxコントロールの枠線など)だけをページ一杯になるまで繰り返し表示します。
ただし、このプロパティには、グループヘッダ/フッタを複数定義している場合には使用できないなど、いくつかの制限事項があります。詳細については、製品ヘルプの[クラスライブラリリファレンス]-[GrapeCity.ActiveReports.v7 アセンブリ]-[GrapeCity.ActiveReports.SectionReportModel名前空間]-[Detailクラス]-[RepeatToFillプロパティ]をご覧ください。
ここでは、NewPage、RepeatStyle、UnderlayNext、RepeatToFillプロパティを使用したレポートを作成します。商品を種類ごとにグループに分け、グループごとにページ分けしています。実際の設定内容については、公開しているサンプルに含まれている「LayoutReport.vb(cs)」をご覧ください。
(7)ShrinkToFitプロパティ
TextBoxやLabelコントロールに用意されているプロパティであり、レポート実行時にコントロール内に収まりきらない文字列を縮小するかどうかを指定します。
前述の「(2)CanGrow/CanShrinkプロパティ」は、出力する文字列にあわせてコントロールの高さを自動的に調整するプロパティであるのに対し、ShrinkToFitプロパティは、コントロールの高さは変えずに、フォントサイズを調整します。
コントロールのShrinkToFitプロパティをTrueに設定した場合、そのコントロールに収まりきらない長さの文字列が設定されても、コントロール内に全ての文字列が収まるように、自動的にフォント サイズを縮小します。
なお、ShrinkToFitプロパティをTrueに設定した場合、CanGrowプロパティの設定は無視されます。