コントロール高さの自動調整(CanGrow/CanShrink)について
対象製品
ActiveReports for .NET 9.0J
詳細
セクションレポートにおいて、TextBoxコントロールやセクションのCanGrow(CanShrink)プロパティをTrueに設定した場合、それらの高さは、データや配置されているコントロールの内容に合わせて自動的に調整されます。
また、CanGrowプロパティによってコントロールの高さが伸長する場合、伸長前のコントロールの下端以下に配置されている他のコントロールの縦位置(Topプロパティ)は、伸長された高さに合わせて自動的に調整されます。

ただし、CanGrowプロパティによって高さが調整されるコントロールの下端より上に上端が、位置が調整されるコントロールの上端より下に下端があるコントロールが他に存在した場合、そちらとの位置関係が優先されるため、縦位置の調整は行われません。セクションの上端から下端まで縦線を出力するために、Lineコントロールを配置しているような場合には、こちらの条件に該当します。
たとえば以下のような配置で、TextBox1がCanGrowにより伸長した場合、TextBox3が存在するために、TextBox2の縦位置は調整されず、TextBox1はTextBox2に重なる形で出力されます。

上記のような配置で、TextBox2の縦位置を調整するには、該当するコントロール(上記の場合TextBox3)を、一時的に非表示にします。
具体的には、コントロールが配置されたセクションのFormatイベント内で、コントロールのVisibleプロパティをFalseにし、BeforePrintイベント内でTrueに戻します。
◆サンプルコード(VB.NET)
◆サンプルコード(C#)
なお、CanGrowプロパティによる高さの自動調整が有効となるのは、Formatイベント終了時に、VisibleプロパティがTrueに設定されているコントロールです。上記の場合、TextBox3の高さは調整されませんので、あらかじめご注意ください。
また、CanGrowプロパティによってコントロールの高さが伸長する場合、伸長前のコントロールの下端以下に配置されている他のコントロールの縦位置(Topプロパティ)は、伸長された高さに合わせて自動的に調整されます。

※ | CanGrow/CanShrinkプロパティによる高さの自動調整は、そのセクションのFormatイベント終了後、BeforePrintイベント発生前に行われます。 |
※ | Formatイベント終了時点で、VisibleプロパティがFalseに設定されているコントロールについては、高さの自動調整は行われません。 |
ただし、CanGrowプロパティによって高さが調整されるコントロールの下端より上に上端が、位置が調整されるコントロールの上端より下に下端があるコントロールが他に存在した場合、そちらとの位置関係が優先されるため、縦位置の調整は行われません。セクションの上端から下端まで縦線を出力するために、Lineコントロールを配置しているような場合には、こちらの条件に該当します。
たとえば以下のような配置で、TextBox1がCanGrowにより伸長した場合、TextBox3が存在するために、TextBox2の縦位置は調整されず、TextBox1はTextBox2に重なる形で出力されます。

上記のような配置で、TextBox2の縦位置を調整するには、該当するコントロール(上記の場合TextBox3)を、一時的に非表示にします。
具体的には、コントロールが配置されたセクションのFormatイベント内で、コントロールのVisibleプロパティをFalseにし、BeforePrintイベント内でTrueに戻します。
◆サンプルコード(VB.NET)
Private Sub Detail_Format(...) Handles Detail.Format
Me.TextBox3.Visible = False
End Sub
Private Sub Detail_BeforePrint(...) Handles Detail.BeforePrint
Me.TextBox3.Visible = True
End Sub
Me.TextBox3.Visible = False
End Sub
Private Sub Detail_BeforePrint(...) Handles Detail.BeforePrint
Me.TextBox3.Visible = True
End Sub
◆サンプルコード(C#)
private void Detail_Format(object sender, System.EventArgs eArgs)
{
this.TextBox3.Visible = false;
}
private void Detail_BeforePrint(object sender, System.EventArgs eArgs)
{
this.TextBox3.Visible = true;
}
{
this.TextBox3.Visible = false;
}
private void Detail_BeforePrint(object sender, System.EventArgs eArgs)
{
this.TextBox3.Visible = true;
}
なお、CanGrowプロパティによる高さの自動調整が有効となるのは、Formatイベント終了時に、VisibleプロパティがTrueに設定されているコントロールです。上記の場合、TextBox3の高さは調整されませんので、あらかじめご注意ください。
関連情報
- CanGrow/CanShrinkプロパティによりコントロールの高さが調整されますが、その他のコントロールの高さを、調整後の高さに合わせる方法は?
- コントロールのサイズに合わせてフォントサイズを自動的に縮小する方法は?
キーワード
HowTo デザイン・レイアウト