小数点の位置を固定した状態で TextBoxコントロールに数値を表示するには?
対象製品
ActiveReports for .NET 9.0J
詳細
小数点以下の値を持つ数値を TextBoxコントロールに表示する際に、整数部や小数部の桁数が異なっても、常に同じ位置に小数点を表示したい場合には、PadLeftメソッドを使用して、値の前に空白を出力して出力位置を調整する方法が考えられます。
具体的な方法は、レポートの形式によって異なります。
なお、いずれの形式についても、当該コントロールのフォントにはプロポーショナルフォントではなく、固定ピッチフォント(等幅フォント)を設定する必要があります。あらかじめご注意ください。
◆サンプルコード(VB.NET)
◆サンプルコード(C#)
たとえば、以下のような手順になります。
ページレポート/RDLレポートにおけるスクリプトの詳細については、製品ヘルプの以下のトピックをご覧ください。
ActiveReportsユーザーガイド
- 概念
- ページレポート/RDLレポートの概念
- スクリプトの使用
- サンプルとチュートリアル
- チュートリアル
- ページレポート/RDLレポートのチュートリアル
- カスタマイズ
- カスタムコードを使用するレポートの作成
具体的な方法は、レポートの形式によって異なります。
なお、いずれの形式についても、当該コントロールのフォントにはプロポーショナルフォントではなく、固定ピッチフォント(等幅フォント)を設定する必要があります。あらかじめご注意ください。
セクションレポートの場合
セクションレポートの場合、コントロールを配置したセクションのFormatイベントに、文字列を編集する処理を追加します。たとえば、以下のようなコードになります。◆サンプルコード(VB.NET)
Private Sub Detail_Format(...) Handles Detail.Format
Me.TextBox1.Text = PaddingSpace(Me.TextBox1.Text)
End Sub
' 整数部の桁数を9桁に設定します。
Private Function PaddingSpace(ByVal s As String) As String
Dim ret As String = ""
' 文字列内の小数点の位置を取得します。
Dim i As Integer = s.IndexOf(".")
' 文字列を編集します。
If i > -1 Then
' 【文字列内に小数点が存在する場合】
' 整数部と小数部の文字列をそれぞれ取得します。
Dim strInteger As String = s.Substring(0, i)
Dim strDecimal As String = s.Substring(i)
' PadLeftメソッドで整数部の文字列長を固定し、小数部と結合します。
ret = strInteger.PadLeft(9, " ") + strDecimal
Else
' 【文字列内に小数点が存在しない場合】
' PadLeftメソッドで文字列長を固定します。
ret = s.PadLeft(9, " ")
End If
' 編集結果を返します。
Return ret
End Function
Me.TextBox1.Text = PaddingSpace(Me.TextBox1.Text)
End Sub
' 整数部の桁数を9桁に設定します。
Private Function PaddingSpace(ByVal s As String) As String
Dim ret As String = ""
' 文字列内の小数点の位置を取得します。
Dim i As Integer = s.IndexOf(".")
' 文字列を編集します。
If i > -1 Then
' 【文字列内に小数点が存在する場合】
' 整数部と小数部の文字列をそれぞれ取得します。
Dim strInteger As String = s.Substring(0, i)
Dim strDecimal As String = s.Substring(i)
' PadLeftメソッドで整数部の文字列長を固定し、小数部と結合します。
ret = strInteger.PadLeft(9, " ") + strDecimal
Else
' 【文字列内に小数点が存在しない場合】
' PadLeftメソッドで文字列長を固定します。
ret = s.PadLeft(9, " ")
End If
' 編集結果を返します。
Return ret
End Function
◆サンプルコード(C#)
private void Detail_Format(object sender, EventArgs e)
{
this.TextBox1.Text = PaddingSpace(this.TextBox1.Text);
}
// 整数部の桁数を9桁に設定します。
private string PaddingSpace(string s)
{
string ret = "";
// 文字列内の小数点の位置を取得します。
int i = s.IndexOf(".");
// 文字列を編集します。
if (i > -1)
{
// 【文字列内に小数点が存在する場合】
// 整数部と小数部の文字列をそれぞれ取得します。
string strInteger = s.Substring(0, i);
string strDecimal = s.Substring(i);
// PadLeftメソッドで整数部の文字列長を固定し、小数部と結合します。
ret = strInteger.PadLeft(9, ' ') + strDecimal;
}
else
{
// 【文字列内に小数点が存在しない場合】
// PadLeftメソッドで文字列長を固定します。
ret = s.PadLeft(9, ' ');
}
// 編集結果を返します。
return ret;
}
{
this.TextBox1.Text = PaddingSpace(this.TextBox1.Text);
}
// 整数部の桁数を9桁に設定します。
private string PaddingSpace(string s)
{
string ret = "";
// 文字列内の小数点の位置を取得します。
int i = s.IndexOf(".");
// 文字列を編集します。
if (i > -1)
{
// 【文字列内に小数点が存在する場合】
// 整数部と小数部の文字列をそれぞれ取得します。
string strInteger = s.Substring(0, i);
string strDecimal = s.Substring(i);
// PadLeftメソッドで整数部の文字列長を固定し、小数部と結合します。
ret = strInteger.PadLeft(9, ' ') + strDecimal;
}
else
{
// 【文字列内に小数点が存在しない場合】
// PadLeftメソッドで文字列長を固定します。
ret = s.PadLeft(9, ' ');
}
// 編集結果を返します。
return ret;
}
ページレポート/RDLレポートの場合
ページレポート/RDLレポートの場合、文字列を編集する処理をスクリプトとして記述し、それをTextBoxコントロールのValueプロパティから「式」として呼び出します。たとえば、以下のような手順になります。
- 文字列を編集するメソッドをスクリプトとして記述します。
レポートのデザイナ画面からスクリプトタブを開き、以下のコードを記述します。
◆サンプルコード
' 整数部の桁数を9桁に設定します。
Public Function PaddingSpace(ByVal s As String) As String
Dim ret As String = ""
' 文字列内の小数点の位置を取得します。
Dim i As Integer = s.IndexOf(".")
' 文字列を編集します。
If i > -1 Then
' 【文字列内に小数点が存在する場合】
' 整数部と小数部の文字列をそれぞれ取得します。
Dim strInteger As String = s.Substring(0, i)
Dim strDecimal As String = s.Substring(i)
' PadLeftメソッドで整数部の文字列長を固定し、小数部と結合します。
ret = strInteger.PadLeft(9, " ") + strDecimal
Else
' 【文字列内に小数点が存在しない場合】
' PadLeftメソッドで文字列長を固定します。
ret = s.PadLeft(9, " ")
End If
' 編集結果を返します。
Return ret
End Function
※ ページレポート/RDLレポートのスクリプトは、VB.NET形式でしか記述できません。これは、プロジェクト自体がC#であっても同様です。 - TextBoxコントロールのValueプロパティに「式」を設定します。
適用したいTextBoxコントロールのValueプロパティに以下のような式を設定します。
◆式
=Code.PaddingSpace(Fields!FieldName.Value)
なお、この場合、Fields!FieldName.Valueの値は自動的に文字列に変換されます。そのため、Formatプロパティによる書式設定は適用されません。書式を設定したい場合には、以下のようにToStringメソッドを使用してください。
◆式
=Code.PaddingSpace(Fields!FieldName.Value.ToString("0.000"))
ページレポート/RDLレポートにおけるスクリプトの詳細については、製品ヘルプの以下のトピックをご覧ください。
ActiveReportsユーザーガイド
- 概念
- ページレポート/RDLレポートの概念
- スクリプトの使用
- サンプルとチュートリアル
- チュートリアル
- ページレポート/RDLレポートのチュートリアル
- カスタマイズ
- カスタムコードを使用するレポートの作成
関連情報
キーワード
HowTo デザイン・レイアウト