[20028] 印刷設定ダイアログの表示が遅い

文書番号 : 39131     文書種別 : 制限事項     登録日 : 2015/10/07     最終更新日 : 2017/02/01
文書を印刷する
対象製品
ActiveReports for .NET 9.0J
詳細
印刷時に表示される印刷設定ダイアログには、ActiveReports独自の詳細設定機能が用意されています。

ActiveReportsユーザーガイド
 - 基本操作
  - 印刷の詳細設定

この機能は、印刷先の用紙サイズ設定にあわせて集約印刷や拡大・縮小印刷などを行う機能ですが、設定ダイアログ上で簡易プレビューなども行っております。こうした動作を実現するため、プリンタドライバから用紙サイズ等の情報取得処理が内部で行われています。この時、プリンタドライバから取得する情報には、プリンタドライバ固有の情報が含まれているため、環境によって取得に要する時間に差異が生じる場合があります。

これは、ActiveReportsの仕様・制限となります。
回避方法
以下のいずれかの方法が考えられます。
  1. ActiveReports独自の詳細設定機能を無効にする

    以下の手順で、Viewerコントロールの[印刷]ボタンをクリックした時に表示される印刷設定ダイアログについて、ActiveReports独自の詳細設定機能を無効にすることが可能です。

    1. フォームデザイナを開き、Viewerコントロールを選択する
    2. プロパティウィンドウ上のPrintingSettingsプロパティについて、ドロップダウンリストを表示させる
    3. UseStandardDialogオプションを「オン」にする
    UseStandardDialogオプションを有効にすることで、ActiveReports独自の詳細設定機能が無効になります。
    (PrintingSettingsプロパティの詳細については、こちらのナレッジ文書の「1.」をご覧ください。)

    なお、上記のプロパティ設定で制御できるのは、Viewerコントロールの[印刷]ボタンをクリックした時の動作のみです。コード上でPrintメソッドを実行する場合は、引数によって詳細設定機能の有無を指定する必要があります。たとえば、以下のようなコードになります。

    ◆サンプルコード(VB.NET)
    ' PrintingSettings 列挙体
    Dim settings As GrapeCity.Viewer.Common.PrintingSettings

    ' 印刷ダイアログを表示     :ON
    ' 進行状況ダイアログを表示   :ON
    ' 印刷を個別のスレッドで実行  :OFF
    ' 標準の印刷設定ダイアログを使用:ON

    settings = GrapeCity.Viewer.Common.PrintingSettings.ShowPrintDialog _
          Or GrapeCity.Viewer.Common.PrintingSettings.ShowPrintProgressDialog _
          Or GrapeCity.Viewer.Common.PrintingSettings.UseStandardDialog

    ' 印刷実行
    Viewer1.Print(settings)

    ◆サンプルコード(C#)
    // PrintingSettings 列挙体
    GrapeCity.Viewer.Common.PrintingSettings settings;

    // 印刷ダイアログを表示     :ON
    // 進行状況ダイアログを表示   :ON
    // 印刷を個別のスレッドで実行  :OFF
    // 標準の印刷設定ダイアログを使用:ON

    settings = GrapeCity.Viewer.Common.PrintingSettings.ShowPrintDialog
          | GrapeCity.Viewer.Common.PrintingSettings.ShowPrintProgressDialog
          | GrapeCity.Viewer.Common.PrintingSettings.UseStandardDialog;

    // 印刷実行
    viewer1.Print(settings);

    この方法でダイアログの表示速度が改善されるのは、Service Pack 2(v9.2.5098.1)以降を適用している場合のみです。最新のサービスパックをご使用ください。

  2. .NET標準のPrintDialogクラスを使用する
    .NET標準のPrintDialogクラスを使用することでActiveReports独自の内部処理が行われず、表示に要する時間が短縮されます。具体的な実装方法については、以下のナレッジ文書の「2.」をご参照ください。

    [文書番号:37796]
    Windowsフォームアプリでレポートを印刷する際、印刷ダイアログ上で押されたボタンを判断する方法は?