セクションレポートでデータのみ印刷
ここでは、セクションレポートで「プレ印字の用紙にデータのみ印刷する」方法を紹介します。セクションレポートではレイヤー機能は使用できませんが、実行時にコードでプレビュー用、および印刷用にレポートを生成することで対応できます。
ただし、この方法の場合は、プレビュー用と印刷用にそれぞれレポートを生成することになります。通常はプレビュー用に作成したレポートをそのまま印刷しますが、この方法では印刷用に再度レポートを生成することになるため、通常のビューワからの印刷に対してパフォーマンス的に不利になります。
付属のサンプルは、「03_セクションレポートでデータのみ印刷.vb/.cs」をご参照ください。
レポートデザインの作成
はじめに、セクションレポートでレポートを作成します。ページレポートの場合と同様、ハガキのレイアウトおよびデータ部分を作成します。
コントロールの非表示
印刷時にプレ印字用紙のレイアウト(郵便番号の枠線や会社ロゴ)を非表示に設定するためのPublicなプロパティを追加します。
Private _ForPrint As Boolean = False Public Property ForPrint As Boolean Get Return Me._ForPrint End Get Set(value As Boolean) Me._ForPrint = value End Set End Property Private Sub Section_DataOnly_ReportStart(sender As Object, e As EventArgs) Handles MyBase.ReportStart ' 非表示にするコントロールの配列 Dim hideControls() As GrapeCity.ActiveReports.SectionReportModel.ARControl = {Me.Shape1, Me.Shape2, Me.Shape3, Me.Shape4, Me.Shape5, Me.Shape6, Me.Shape7, Me.Label1, Me.Picture1} ' コントロールを非表示にする If Me.ForPrint Then For Each c As SectionReportModel.ARControl In hideControls c.Visible = False Next End If End Sub
private Boolean _ForPrint = false; public Boolean ForPrint { get { return this._ForPrint; } set { this._ForPrint = value; } } private void Section_DataOnly_ReportStart(object sender, EventArgs e) { // 非表示にするコントロールの配列 GrapeCity.ActiveReports.SectionReportModel.ARControl[] hideControls = {this.Shape1, this.Shape2, this.Shape3, this.Shape4, this.Shape5, this.Shape6, this.Shape7, this.Label1, this.Picture1}; // コントロールを非表示にする if (this.ForPrint) { foreach (GrapeCity.ActiveReports.SectionReportModel.ARControl c in hideControls) { c.Visible = false; } } }
印刷ボタンの動作を変更する
データのみのレポートを印刷するように、印刷ボタンの動作を変更します。
Viewerコントロールのツールバーは .NET FrameworkのToolStripオブジェクトで作成されていますので、カスタマイズが可能です。カスタマイズの方法については、こちらのナレッジ文書をご参照ください。
まとめ
今回は、9.0Jの新機能であるレイヤーを紹介しました。レイヤーのDesignerTrasnparencyプロパティを使用することで、既存の帳票の画像をトレースして帳票レイアウトを作成できます。また、レイヤーのTargetDeviceプロパティを使用することで、簡単にプレ印字の用紙にデータのみ印刷できます。
次回は、「HTML5ビューワ」を使用したWebアプリケーションの作成方法を紹介します。