コントロールのプロパティを動的に変更する方法は?
対象製品
ActiveReports for .NET 9.0J
詳細
コントロールのプロパティを動的に変更する方法は、レポートの形式によって異なります。
たとえば、以下のようなコードになります。
◆サンプルコード(VB.NET)
◆サンプルコード(C#)
なお、コントロールを操作できるのは、そのコントロールが配置されているセクションのイベント(Format、BeforePrint、AfterPrint)内、またはReportStartイベント内のみです。
また、製品ヘルプの以下のトピックもあわせてご覧ください。
ActiveReportsユーザーガイド
- 概念
- セクションレポートの概念
- セクションレポートのイベント
- 基本操作
- セクションレポートの基本操作
- 高度なレポートレイアウトの作成
- 隔行で色の変更
- 条件による詳細情報の表示/非表示
式の詳細や使用例については、製品ヘルプの以下のトピックをご覧ください。
ActiveReportsユーザーガイド
- 概念
- ページレポート/RDLレポートの概念
- 式
- 基本操作
- ページレポート/RDLレポートの基本操作
- 高度なページ形式のレイアウトの作成
- マイナス値の赤表示
- 隔行で色の変更
- サンプルとチュートリアル
- チュートリアル
- ページレポート/RDLレポートのチュートリアル
- データ
- レポートで式の使用
- カスタマイズ
- カスタムコードを使用するレポートの作成
なお、この方法が適用可能なプロパティは「式」を設定できる ExpressionInfo型のプロパティのみです。
コントロールの位置やサイズなどを変更することはできません。
セクションレポートの場合
セクションレポートの場合、ActiveReportsのイベントにコントロールのプロパティを変更するコードを実装することで、動的な変更を実現できます。たとえば、以下のようなコードになります。
◆サンプルコード(VB.NET)
Private Sub Detail1_Format(...) Handles Detail1.Format
' Textプロパティの値を別の文字列に変換します。
Dim s As String
Select Case Me.TextBox1.Text
Case "1" : s = "文字列1"
Case "2" : s = "文字列2"
Case "3" : s = "文字列3"
Case Else : s = "文字列X"
End Select
Me.TextBox1.Text = s
' (X=2, Y=1.5)センチの位置に移動します。(※1)
Me.TextBox1.Location = New System.Drawing.PointF( _
GrapeCity.ActiveReports.SectionReport.CmToInch(2.0F), _
GrapeCity.ActiveReports.SectionReport.CmToInch(1.5F))
' "MS ゴシック"の14pt、太字+斜体に変更します。(※2)
Me.TextBox1.Font = New System.Drawing.Font("MS ゴシック", 14.0F, _
FontStyle.Bold Or FontStyle.Italic, GraphicsUnit.Point, 128)
End Sub
' Textプロパティの値を別の文字列に変換します。
Dim s As String
Select Case Me.TextBox1.Text
Case "1" : s = "文字列1"
Case "2" : s = "文字列2"
Case "3" : s = "文字列3"
Case Else : s = "文字列X"
End Select
Me.TextBox1.Text = s
' (X=2, Y=1.5)センチの位置に移動します。(※1)
Me.TextBox1.Location = New System.Drawing.PointF( _
GrapeCity.ActiveReports.SectionReport.CmToInch(2.0F), _
GrapeCity.ActiveReports.SectionReport.CmToInch(1.5F))
' "MS ゴシック"の14pt、太字+斜体に変更します。(※2)
Me.TextBox1.Font = New System.Drawing.Font("MS ゴシック", 14.0F, _
FontStyle.Bold Or FontStyle.Italic, GraphicsUnit.Point, 128)
End Sub
◆サンプルコード(C#)
private void detail_Format(object sender, EventArgs e)
{
// Textプロパティの値を別の文字列に変換します。
string s;
switch (this.textBox1.Text)
{
case "1": s = "文字列1"; break;
case "2": s = "文字列2"; break;
case "3": s = "文字列3"; break;
default: s = "文字列X"; break;
}
this.textBox1.Text = s;
// (X=2, Y=1.5)センチの位置に移動します。(※1)
this.textBox1.Location = new System.Drawing.PointF(
GrapeCity.ActiveReports.SectionReport.CmToInch(2.0f),
GrapeCity.ActiveReports.SectionReport.CmToInch(1.5f));
// "MS ゴシック"の14pt、太字+斜体に変更します。(※2)
this.textBox1.Font = new System.Drawing.Font("MS ゴシック", 14.0f,
System.Drawing.FontStyle.Bold | System.Drawing.FontStyle.Italic,
System.Drawing.GraphicsUnit.Point, 128);
}
{
// Textプロパティの値を別の文字列に変換します。
string s;
switch (this.textBox1.Text)
{
case "1": s = "文字列1"; break;
case "2": s = "文字列2"; break;
case "3": s = "文字列3"; break;
default: s = "文字列X"; break;
}
this.textBox1.Text = s;
// (X=2, Y=1.5)センチの位置に移動します。(※1)
this.textBox1.Location = new System.Drawing.PointF(
GrapeCity.ActiveReports.SectionReport.CmToInch(2.0f),
GrapeCity.ActiveReports.SectionReport.CmToInch(1.5f));
// "MS ゴシック"の14pt、太字+斜体に変更します。(※2)
this.textBox1.Font = new System.Drawing.Font("MS ゴシック", 14.0f,
System.Drawing.FontStyle.Bold | System.Drawing.FontStyle.Italic,
System.Drawing.GraphicsUnit.Point, 128);
}
※1 | Locationプロパティは値型であるため、このプロパティから返されるLocationオブジェクトのメンバ(Location.Xなど)を直接変更することはできません。Locationプロパティを動的に変更する場合は、Locationプロパティのデータ型であるSystem.Drawing.PointFクラスのインスタンスを新たに生成する必要があります。 |
※2 | Fontプロパティ以下のプロパティはReadOnlyであるため、たとえばFont.Nameプロパティの値を直接変更するといったことはできません。Fontプロパティを動的に変更する場合は、Fontオブジェクトのインスタンスを新たに生成する必要があります。 |
なお、コントロールを操作できるのは、そのコントロールが配置されているセクションのイベント(Format、BeforePrint、AfterPrint)内、またはReportStartイベント内のみです。
また、製品ヘルプの以下のトピックもあわせてご覧ください。
ActiveReportsユーザーガイド
- 概念
- セクションレポートの概念
- セクションレポートのイベント
- 基本操作
- セクションレポートの基本操作
- 高度なレポートレイアウトの作成
- 隔行で色の変更
- 条件による詳細情報の表示/非表示
ページレポート/RDLレポートの場合
ページレポートやRDLレポートの場合、変更したいコントロールのプロパティに「式」を設定することで、動的な変更を実現できます。たとえば、以下のような例が挙げられます。- 出力する値を別の文字列に変換する
以下のような式をValueプロパティに設定します。
◆式
=Switch(Fields!FieldName.Value="1","文字列1",
Fields!FieldName.Value="2","文字列2",
Fields!FieldName.Value="3","文字列3",
Fields!FieldName.Value<>"","文字列X") - 出力する値がマイナス値の時のみ、フォントを斜体に設定する
以下のような式をFont.FontStyleプロパティに設定します。
◆式
=IIF(Fields!FieldName.Value<0,"Italic","Normal")
- 最終ページのみ値を表示する
以下のような式をValueプロパティに設定します。
◆式
=IIF(Globals!PageNumber=Globals!TotalPages,Fields!FieldName.Value,"")
式の詳細や使用例については、製品ヘルプの以下のトピックをご覧ください。
ActiveReportsユーザーガイド
- 概念
- ページレポート/RDLレポートの概念
- 式
- 基本操作
- ページレポート/RDLレポートの基本操作
- 高度なページ形式のレイアウトの作成
- マイナス値の赤表示
- 隔行で色の変更
- サンプルとチュートリアル
- チュートリアル
- ページレポート/RDLレポートのチュートリアル
- データ
- レポートで式の使用
- カスタマイズ
- カスタムコードを使用するレポートの作成
なお、この方法が適用可能なプロパティは「式」を設定できる ExpressionInfo型のプロパティのみです。
コントロールの位置やサイズなどを変更することはできません。
※ | ページレポートはデザイン時にページのレイアウトを決定し、そのレイアウト通りに出力することを前提としたレポートです。そのため、コントロールの位置やサイズなど、レイアウトに影響する設定をレポートの実行中に動的に変更することはできません。 |
関連情報
- コントロールのサイズに合わせてフォントサイズを自動的に縮小する方法は?
- 使用可能なフォントの種類は?
- 1行(1レコード)ごとに背景色を変更する方法は?
- レポート上に動的に画像を表示させる方法は?
- セクションレポートのRichTextBoxコントロールのフォントを動的に変更する方法は?
- レポートを呼び出すコード側からレポートに値を渡す方法は?
- レポートのデータソース(接続文字列やSQL文など)は、動的に変更できますか?
キーワード
HowTo セクションレポート デザイン・レイアウト ページレポート