Shoeisha Technology Media

CodeZine(コードジン)

特集ページ一覧

5分でわかるActiveReports帳票-罫線・折り返しとプレビュー・印刷(2007年度版)

ActiveReportsの罫線・折り返しとプレビュー・印刷

  • ブックマーク
  • LINEで送る
  • このエントリーをはてなブックマークに追加
2007/11/08 14:00

目次

罫線とデータの折り返しが含まれる帳票-「データ表示」

複数のデータフィールドを1つのTextBoxで表示する

 お店の名前と住所の項目ですが、別々のテキストボックスに貼り付けると、先ほど説明したように、縦線コントロールが二つのコントロールをまたいでいるため、折り返した際に重なって表示されてしまいます。

 そこで、二つの項目を同じTextBoxにまとめて表示させることで、重なりを回避します。1つのTextBoxコントロールに複数の値を表示させるには、DataFieldプロパティを次のように設定します。

DataFieldの設定
DataFieldの設定

 ShopNameはテーブルの店名、ShopZipは郵便番号、ShopAdress1とShopAdress2は住所のカラム名です。先頭に「=」をつけると、ソース上の記述のようにプロパティを設定することができます。

 二つの項目のフォント設定が異なる場合は、TextBoxコントロールではなく、RichTextBoxコントロールを用います。RichTextBoxコントロールはテキストの表示に複数のフォントや色を設定することのできるコントロールです。

RichTextBoxで部分的にテキストのフォントを変更する(C# 2.0)
//リッチテキストのフォント設定
Font richTextHeaderFont = new Font("MS 明朝", 12f, FontStyle.Bold);

//リッチテキスト内の範囲指定をする
this.richTextBoxShopNameAdress.SelectionStart = 0;
this.richTextBoxShopNameAdress.SelectionLength
 = this.textBoxShopName.Text.Length;

//選択した部分のフォントを変更する
this.richTextBoxShopNameAdress.SelectionFont = richTextHeaderFont;
RichTextBoxで部分的にテキストのフォントを変更する(VB.NET 2005)
'リッチテキストのフォント設定
Dim richTextFont As New Font("MS 明朝", 12.0F, FontStyle.Bold)

'リッチテキスト内の範囲選択をする
RichTextBox1.SelectionStart = 0
RichTextBox1.SelectionLength = Me.TextBoxShopName.Text.Length

'選択したフォントを変更する
RichTextBox1.SelectionFont = richTextFont

 このサンプルでは、店名の長さを取得するためと背景色をつけるために、店名のみをDataFieldに設定したtextBoxShopNameというTextBoxを配置しています。

できあがりイメージ
できあがりイメージ

書式つき文字列にデータをバインドする

RichTextBoxコントロールでのデータバインド

 RichTextコントロールでは、テキスト内にデータフィールドの値をバインドして表示させることができます。リッチテキストコントロールをダブルクリックするとテキストの編集が可能ですが、そこで

(消費税 [!TaxAmt]円)

 のように記述すると、データフィールドの値をバインドすることができます。

RichTextBoxコントロールの編集イメージ
RichTextBoxコントロールの編集イメージ

 [! ]内はFieldsのカラム名を指定します([フィールドの追加]からも指定できます)。

 データソース(バウンドフィールド)の場合、はじめから値が入っていますが、自分で編集した値を組み込む場合は、前々回紹介したようにアンバウンドフィールドを作成(実行時にフィールドを追加)して使用してください。

RichText
RichText
RichText
RichText

TextBoxコントロールでのデータバインド

 TextBoxコントロールのOutputFormatプロパティには、書式文字列を指定できます。

TextBoxコントロールに書式文字列を設定する(1)(C# 2.0)
private void  detail_Format(object sender, EventArgs e)
{
  TextBoxDtilTaxAmt.OutputFormat = "\\(消費税 ###,###,##0\\円)";
}
TextBoxコントロールに書式文字列を設定する(1)(VB.NET 2005)
Private Sub Detail_Format( _
        ByVal sender As System.Object, _
        ByVal e As System.EventArgs) Handles Detail.Format

    TextBoxDtilTaxAmt.OutputFormat = "\\(消費税 ###,###,##0\\円)"
End Sub

 この例では書式を指定する(###,###,##0)の前後にも「消費税」や「円」などの文言が含まれています。金額の範囲が0以上であることが保証されていればこの方法でよいのですが、マイナスの値が入ってくると「-(消費税 3,000 円)」のように、書式の外側にマイナス記号が表示されてしまいます。

 このような場合はReportStartイベントでTextBoxコントロールのOutputFormatプロパティに書式のみを指定し、前後の文言はdetail_formatイベントで再設定することで、「(消費税 -3,000 円)」のように期待する結果を出力することができます。

TextBoxコントロールに書式文字列を設定する(2)(C# 2.0)
private void  NewActiveReport1_ReportStart(object sender, EventArgs e)
{
  TextBoxDtilTaxAmt.OutputFormat = "###,###,##0";

}
private void detail_Format(object sender, EventArgs e)
{
  TextBoxDtilTaxAmt.Text
     = "(消費税 " + TextBoxDtilTaxAmt.Text + "円)";
}
TextBoxコントロールに書式文字列を設定する(2)(VB.NET 2005)
Private Sub NewActiveReport1_ReportStart( _
        ByVal sender As System.Object, _
        ByVal e As System.EventArgs) Handles MyBase.ReportStart
  TextBoxDtilTaxAmt.OutputFormat = "###,###,##0"
End Sub

Private Sub Detail_Format( _
        ByVal sender As System.Object, _
        ByVal e As System.EventArgs) Handles Detail.Format
  TextBoxDtilTaxAmt.Text = _
            "(消費税 " + TextBoxDtilTaxAmt.Text + "円)"
End Sub

  • ブックマーク
  • LINEで送る
  • このエントリーをはてなブックマークに追加

著者プロフィール

  • 宮本奈紗(ミヤモトナサ)

    株式会社システムインテグレータ ERPソリューション部所属。 ERPシステムの設計・開発に従事。業務でActiveReportsを使用。

  • 渡辺俊史(ワタナベトシフミ)

    株式会社システムインテグレータ パッケージ開発部所属。ECサイト構築パッケージの設計・開発に従事。VSUG(Visual Studio User Group) データベース・データアクセスフォーラムリーダー。 blog:t.watanabe weblog

バックナンバー

連載:5分でわかるActiveReports帳票

もっと読む

All contents copyright © 2005-2019 Shoeisha Co., Ltd. All rights reserved. ver.1.5