コントロール高さの自動調整(CanGrow/CanShrink)について

文書番号 : 33968     文書種別 : 使用方法     登録日 : 2012/12/19     最終更新日 : 2013/04/23
文書を印刷する
対象製品
ActiveReports for .NET 7.0J
詳細
セクションレポートにおいて、TextBoxコントロールやセクションのCanGrow(CanShrink)プロパティをTrueに設定した場合、それらの高さは、データや配置されているコントロールの内容に合わせて自動的に調整されます。

また、CanGrowプロパティによってコントロールの高さが伸長する場合、伸長前のコントロールの下端以下に配置されている他のコントロールの縦位置(Topプロパティ)は、伸長された高さに合わせて自動的に調整されます。

CanGrowプロパティの動作概要
CanGrow/CanShrinkプロパティによる高さの自動調整は、そのセクションのFormatイベント終了後、BeforePrintイベント発生前に行われます。
Formatイベント終了時点で、VisibleプロパティがFalseに設定されているコントロールについては、高さの自動調整は行われません。


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

たとえば以下のような配置で、TextBox1がCanGrowにより伸長した場合、TextBox3が存在するために、TextBox2の縦位置は調整されず、TextBox1はTextBox2に重なる形で出力されます。

CanGrowプロパティが適切に動作しない例

上記のような配置で、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

◆サンプルコード(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;
}

なお、CanGrowプロパティによる高さの自動調整が有効となるのは、Formatイベント終了時に、VisibleプロパティがTrueに設定されているコントロールです。上記の場合、TextBox3の高さは調整されませんので、あらかじめご注意ください。
関連情報
キーワード
HowTo デザイン・レイアウト