Shoeisha Technology Media

CodeZine(コードジン)

特集ページ一覧

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

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

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

目次

ActiveReportsのプレビュー・印刷機能

レポートデザイナののプレビュー機能と用紙サイズ

 第1回でも紹介しましたが、ActiveReports 3.0Jでは、Visual Studioに統合されたレポートデザイナで手軽にプレビューが行えるようになりました。レポートデザイナの左下にある「プレビュー」タブをクリックすると、帳票のプレビューが表示されます。プレビュータブに移動したとき、プロジェクトがビルドされていない場合は、自動的にビルド処理が実行されます。

 プレビュー機能で表示できる最大ページ数は、Viewerコントロールと違いデフォルトでは10ページに設定されています。表示するページ数は[レポート]メニューの[レポートの設定]-[グローバル設定]で変更できます。

グローバル設定
グローバル設定

 プレビュー機能での余白(グレーアウト部分)の表示は、[レポート]-[レポートの設定]の[ページ設定]と[プリンタ設定]にあわせて表示されます。指定された用紙の幅よりも、レポート全体の幅が大きい場合、プレビュー画面に赤い線が表示されます。

 実際のビューワでは、[レポート]-[レポートの設定]の[ページ設定]で設定される左右マージンとレイアウトの幅を足したものが用紙幅より大きかった場合、赤線が表示されます。
PageSettings.Margins.Left 
+ PageSettings.Margins.Right + PrintWidth <= PageSettings.PaperWidth

 レイアウトの幅はレポートエクスプローラーの一番上[レポートコンテンツ]のPrintWidthプロパティで設定します。

PrintWidthプロパティ設定
PrintWidthプロパティ設定

 また、[レポート]-[レポートの設定]の[プリンタ設定]には、PCのデフォルトプリンタの印刷設定にある情報を設定できます。また、次のようなコードでプリンタごとに利用可能な用紙サイズを調べることもできます。

利用可能な用紙サイズを調べる(C# 2.0)
//usingディレクティブで「System.Diagnostics」と
//「System.Drawing.Printing」を補って下さい。

NewActiveReport1 report = new NewActiveReport1();
foreach (PaperSize paper in report.Document.Printer.PaperSizes)
{
    Debug.Write(paper.Kind.ToString() + ", ");
    Debug.Write(paper.PaperName.ToString() + ", ");
    Debug.Write(paper.Height.ToString() + ", ");
    Debug.WriteLine(paper.Width.ToString());
}
利用可能な用紙サイズを調べる(VB.NET 2005)
'Importsディレクティブで「System.Diagnostics」と
'「System.Drawing.Printing」を補って下さい。

Dim report As New NewActiveReport1
For Each paper As PaperSize In report.Document.Printer.PaperSizes
    Debug.Write(paper.Kind.ToString() & ", ")
    Debug.Write(paper.PaperName.ToString() & ", ")
    Debug.Write(paper.Height.ToString() & ", ")
    Debug.WriteLine(paper.Width.ToString())
Next

 なお、開発者のPCに本番環境で使うプリンタや用紙サイズを設定することができないような場合は、実行時にReportStartイベントで帳票に仮想プリンタを設定して印刷設定を変更する必要があります。仮想プリンタ設定に必要なコードはActiveReportsのコードスニペット(ActiveReports for .NET 3.0J>印刷>仮想プリンタを設定する)に含まれています。

Printメソッド実行時の印刷設定

 ActiveReportsで帳票を印刷するには、DocumentプロパティのPrintメソッドを呼び出します。Printメソッドに渡すパラメータを調整することで、ユーザーが印刷内容を確認することのできるダイアログを表示させたり、帳票出力中の進行状況を表示させたりすることができます。

Printメソッド(C# 2.0)
  NewActiveReport1 report = new NewActiveReport1();
  report.Run();

  //Printメソッドを実行する
  report.Document.Print(true, false, true);
Printメソッド(VB.NET 2005)
  Dim report As New NewActiveReport1()
  report.Run()

  'Printメソッドを実行する
  report.Document.Print(True, False, True)

 Printメソッドのパラメータ指定は前から順にshowPrintDialog、showPrintProgressDialog、usePrintingThreadの値を設定します。

Document.PrintDocument.Printメソッドの引数
項目 内容
showPrintDialog ドキュメントをプリンタに送信する前に、オプションを設定できるための印刷ダイアログを表示するかどうか
showPrintProgressDialog 実行中にキャンセルボタンのついた進行状況ダイアログを表示するかどうか
usePrintingThread 別スレッドで印刷処理を実行するかどうか

印刷ダイアログでOKボタンが押されたかどうかを確認する

 帳票アプリケーションでは、帳票出力処理を実行したあと、その印刷ジョブがプリンタに送信されたどうかを確認して処理を続行(または中止)することがあります。

 ActiveReportsの標準機能ではプリンタ側に送られた印刷ジョブが成功したどうかを直接取得することはできませんが、印刷ダイアログのOKボタンが押されたかどうかはイベントの戻り値で判断することができます。

印刷ダイアログのOKボタンが押されたかどうかを確認する(C# 2.0)
//印刷ダイアログのボタンを判定
private void printButton_Click(object sender, EventArgs e)
{
    //帳票データ作成
    NewActiveReport1 report = new NewActiveReport1();
    //帳票作成
    report.Run(false);
    //印刷ダイアログのOK=true/キャンセル=falseが戻り値
    bool okButtonIsPushed = report.Document.Print(true, true, true);
}
印刷ダイアログのOKボタンが押されたかどうかを確認する(VB.NET 2005)
Private Sub PrintButton_Click( _
        ByVal sender As System.Object, _
        ByVal e As System.EventArgs) _
        Handles PrintButton.Click
    '帳票データ作成
    Dim report As New NewActiveReport1
    '帳票を生成
    report.Run()
    '印刷ダイアログのOK=true/キャンセル=falseが戻り値
    Dim okButtonIsPushed = report.Document.Print()
End Sub

 Viewerコントロールの印刷ボタンが押されたかどうかを判断したい場合は、ViewerコントロールのToolClickイベントにコードを追加します。具体的には、ToolClickEventArgsクラスのToolプロパティに含まれるID値を使用して判断します。

Viewerコントロールの印刷ボタンがクリックされたかどうかを確認する(C# 2.0)
private void viewer1_ToolClick(object sender, 
          DataDynamics.ActiveReports.Toolbar.ToolClickEventArgs e)
{
    //INDEX=2のコントロール(印刷ボタン)がクリックされた
    if (e.Tool.Id == 2)
    {
       bool printButtonisPushed = true;
    }
}
Viewerコントロールの印刷ボタンがクリックされたかどうかを確認する(VB.NET 2005)
Private Sub Viewer1_ToolClick( _
   ByVal sender As System.Object, _
   ByVal e As DataDynamics.ActiveReports.Toolbar.ToolClickEventArgs) _
   Handles Viewer1.ToolClick
    'INDEX=2のコントロール(印刷ボタン)がクリックされた
    If e.Tool.Id = 2 Then
        Dim printButtonisPushed = True
    End If
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