ActiveReports for .NET 18.0J
エンドユーザーレポートデザイナの作成(Professional)
ActiveReportsユーザーガイド > サンプルとチュートリアル > チュートリアル > 共通のチュートリアル(ページレポート/RDLレポート/セクションレポート > Professional > エンドユーザーレポートデザイナの作成(Professional)

このチュートリアルでは、ActiveReportsのProfessional エディションでWindowsフォームアプリケーションに基本的なエンドユーザーレポートデザイナを作成する方法を示します。

このチュートリアルでは、以下の作業を行います。

チュートリアルを完了すると、次のようなエンドユーザーレポートデザイナが作成されます。

フォームにデザイナコントロールの追加

レポートファイルの編集とプレビューのみできるデザイナを追加します。

  1. Visual Studio 2022を開き、「Windowsフォームアプリ」テンプレートを選択して、新しいプロジェクトを追加します。
  2. プロジェクト名をCustomEUDに設定し、[次へ]をクリックします。
  3. [追加情報]画面では、フレームワークを選択し、[作成]をクリックします。
  4. ActiveReports 18のツールボックスとコントロールをVisual Studioで使用できるようにするには、次の2つのパッケージをインストールします。
    MESCIUS.ActiveReports.ja
    MESCIUS.ActiveReports.Design.Win.ja
  5. フォームを選択して、プロパティウィンドウのNameプロパティを[frmMain]に変更し、Textプロパティを[ActiveReports]に変更します。
  6. 次の手順の表で示すコントロールが収まるように、フォームのサイズを変更します。詳細については、「ActiveReportsコントロールを追加する」を参照してください。
  7. Visual Studioのツールボックスからデザイナコントロールをフォーム上に配置して、名前を_designer]に変更します。
  8. Visual Studioのツールボックスからツールボックスコントロールをフォーム上に配置して、名前を[toolbox]に変更します。
  9. ToolBoxコントロールをデザイナコントロールに添付するには、ソリューションエクスプローラーで、Form1.csを右クリックし、[コードの表示]を選択します。
  10. InitializeComponentメソッドの後に次のコード(太字の部分)を追加します。
    C#コード(InitializeComponentメソッドの後に貼り付けます) 
    コードのコピー
    public frmMain()
    {
    InitializeComponent();
    _designer.Toolbox = toolbox;
    }
  11. コードビューの上にusingディレクティブを追加します。
    C#コード(Form1コードビューの上に貼り付けます)
    コードのコピー
    using GrapeCity.ActiveReports.Design;
    

レポートファイルの読み込みおよび保存

  1. Visual Studioのメニューとツールバーのツールボックスグループからフォーム上にMenuStripコントロールを配置します。
  2. MenuStripコントロールの構造を次のように作成します。
    ファイル > 開く 、ファイル > 名前を付けて保存

  3. フォーム上で、[開く]メニュー項目をダブルクリックし、下記のコード(太字の部分)をopenToolStripMenuItem_Clickハンドラーに貼り付けます。
    C#コード(openToolStripMenuItem_Clickハンドラー内に貼り付けます。)
    コードのコピー
    private void openToolStripMenuItem_Click(object sender, EventArgs e)
    {
    OpenFileDialog openFileDialog = new OpenFileDialog();
    var dialogResult = openFileDialog.ShowDialog();
    if (dialogResult == System.Windows.Forms.DialogResult.OK)
    {
    _designer.LoadReport(new System.IO.FileInfo(openFileDialog.FileName));
    }

    }
  4. フォーム上で、[名前を付けて保存]メニュー項目をダブルクリックし、下記のコード(太字の部分)をsaveAsToolStripMenuItem_Clickハンドラーに貼り付けます。
    C#コード(saveAsToolStripMenuItem_Clickハンドラー内に貼り付けます。)
    コードのコピー
    private void saveAsToolStripMenuItem_Click(object sender, EventArgs e)
             {
                 SaveFileDialog saveFileDialog = new SaveFileDialog();
                 saveFileDialog.Filter = GetSaveFilter();
                 var dialogResult = saveFileDialog.ShowDialog();
                 if (dialogResult == System.Windows.Forms.DialogResult.OK)
                 {
                    _designer.SaveReport(new System.IO.FileInfo(saveFileDialog.FileName));
                 }
             }
           
    
  5. saveAsToolStripMenuItem_Clickハンドラーのコードの後にGetSaveFilterメソッドのコードを下記のように追加します。
    C#コード(saveAsToolStripMenuItem_Click ハンドラーの後に貼り付けます)
    コードのコピー
    private string GetSaveFilter()
     {
         switch (designer.ReportType)
         {
            case DesignerReportType.Section:
               return "Section Report Files (*.rpx)|*.rpx";
            case DesignerReportType.Page:
               return "Page Report Files (*.rdlx)|*.rdlx";
            case DesignerReportType.Rdl|DesignerReportType.RdlDashboard:
               return "RDL Report Files (*.rdlx)|*.rdlx";
            default:
               return "RDL Report Files (*.rdlx)|*.rdlx";
         }
     }                                        
    

選択されたレポート種類に基づいて新規レポートの作成

  1. MenuStripコントロールの構造を次のように作成します。

    ファイル > 新規レポート> ページレポート; ファイル > 新規レポート > セクションレポート; ファイル > 新規レポート > RDLレポート; ファイル > 新規レポート > ダッシュボード

     

  2. [セクションレポート]の MenuStrip項目をダブルクリックし、下記のコード(太字の部分)をsectionToolStripMenuItem_Clickハンドラーに追加します。
    C#コード(sectionToolStripMenuItem_Clickハンドラー内に貼り付けます。)
    コードのコピー
    private void sectionToolStripMenuItem_Click(object sender, EventArgs e)
      {
       _designer.NewReport(DesignerReportType.Section);
      }                                
    
  3. [ページレポート]のMenuStrip項目をダブルクリックし、下記のコード(太字の部分)をpageReportToolStripMenuItem_Clickハンドラーに追加します。
    C#コード(pageReportToolStripMenuItem_Clickハンドラー内に貼り付けます。)
    コードのコピー
    private void pageReportToolStripMenuItem_Click(object sender, EventArgs e)
      {
        _designer.NewReport(DesignerReportType.Page);
      }                              
    
  4. [RDLレポート]のMenuStrip項目をダブルクリックし、下記のコード(太字の部分)をrdlReportToolStripMenuItem_Clickハンドラーに追加します。
    C#コード(rdlReportToolStripMenuItem_Clickハンドラー内に貼り付けます。)
    コードのコピー
    private void rdlReportToolStripMenuItem_Click(object sender, EventArgs e)
      {
       _designer.NewReport(DesignerReportType.Rdl);
      }                                
    

エクスポートオプションの追加

  1. [ツール] > [Nugetパッケージマネージャー] > [ソリューションのNugetパッケージの管理]の順に移動します。
  2. 次のパッケージを参照し、[インストール]をクリックします。
    MESCIUS.ActiveReports.Export.Pdf.ja
  3. コード上にusingディレクティブを追加します。
    C#コード(Form1コードビューの上に貼り付けます)
    コードのコピー
    using GrapeCity.ActiveReports.Export.Pdf.Page;
    using GrapeCity.ActiveReports.Rendering.IO;
    using GrapeCity.ActiveReports;
    using System.IO;                       
    
  4. MenuStripコントロールで、[ファイル]メニュー項目に[エクスポート]メニュー項目を追加します。

  5. [プロパティ]ウィンドウで、Enabledプロパティを[False]に設定します。これにより、[エクスポート]メニュー項目がプレビューモードでのみ表示されます。
  6. ページレポート、RDLレポート、ダッシュボードに対してのみ[エクスポート]メニュー項目を表示するには、InitializeComponentメソッドの後に次のコード(太字の部分)を追加します。       
    C#コード(InitializeComponentメソッドの後に貼り付けます)
    コードのコピー
    public frmMain()
    {
    InitializeComponent();
    _designer.Toolbox = toolbox;
    _designer.ActiveTabChanged += designer_ActiveTabChanged;
    }
    void designer_ActiveTabChanged(object sender, EventArgs e)
    {
    exportToolStripMenuItem.Enabled = _designer.ActiveTab == DesignerTab.Preview && _designer.ReportType != DesignerReportType.Section;
    }

  7. フォーム上で、[エクスポート]項目をダブルクリックし、下記のコード(太字の部分)をexportToolStripMenuItem_Clickハンドラーに追加します。
    C#コード(exportToolStripMenuItem_Clickハンドラー内に貼り付けます。)
    コードのコピー
    private void exportToolStripMenuItem_Click(object sender, EventArgs e)
    {
    SaveFileDialog saveFileDialog = new SaveFileDialog();
    saveFileDialog.Filter = "Pdf (*.pdf)|*.pdf";
    var dialogResult = saveFileDialog.ShowDialog();
    if (dialogResult == System.Windows.Forms.DialogResult.OK)
    {
    var pdfRe = new PdfRenderingExtension();
    var msp = new MemoryStreamProvider();
    (_designer.Report as PageReport).Document.Render(pdfRe, msp);
    using (var stream = msp.GetPrimaryStream().OpenStream())
    using (var fileStream = new FileStream(saveFileDialog.FileName, FileMode.Create, FileAccess.Write))
    {
    stream.CopyTo(fileStream);
    }
    MessageBox.Show("エクスポートが完了しました。");
    }
            }                      
    
エクスポートフィルタ、および描画拡張機能に関連する設定の詳細については「エクスポート」を参照してください。

フォームに他のコントロールの追加

  1. Visual Studioのツールボックスからフォーム上に下記のコントロールを配置します。
    コントロール 名前 プロパティの値
    ReportExplorer arReportExplorer

    ReportDesigner = _designer
    これによりActiveReportsデザイナをReportExplorerコントロールにバインドします。

    必要に応じてサイズを変更および移動します。

    LayerList arLayerList

    ReportDesigner = _designer
    これにより、ActiveReportsデザイナをLayerListコントロールにバインドします。

    必要に応じてサイズを変更および移動します。

    PropertyGrid arPropertyGrid 必要に応じてサイズを変更および移動します。
    GroupEditor arGroupEditor

    ReportDesigner = _designer
    これによりActiveReportsデザイナをGroupEditorコントロールにバインドします。

    必要に応じてサイズを変更および移動します。

    ReportsLibrary arReportsLibrary

    ReportDesigner = _designer
    これによりActiveReportsデザイナをReportsLibraryコントロールにバインドします。
    必要に応じてサイズを変更および移動します。

  2. フォームで、デザイナコントロールを選択します。
  3. プロパティウィンドウで、デザイナコントロールのPropertyGridプロパティを[arPropertyGrid]に設定します。これによりActiveReportsデザイナをProperty Gridコントロールにバインドします。

エンドユーザーレポートデザイナの表示

[F5]を押してプロジェクトを実行します。エンドユーザーレポートデザイナが開いてページレポートが表示されます。

エンドユーザーレポートデザイナをカスタマイズする方法の詳細については、「エンドユーザーデザイナ サンプル」を参照してください。

デザイナアクションを呼び出す

GrapeCity.ActiveReports.Design.DesignerActionNewReportデザイナアクションを呼び出す必要があります。

C#コード。InitializeComponentメソッドの後に貼り付けます
コードのコピー
public frmMain()
{
InitializeComponent();
_designer.ExecuteAction(DesignerAction.NewReport);
}

[新規レポートの作成]ダイアログには、作成するレポートのテンプレート、およびデータソースウィザードを起動するためのオプションが表示されます。
 Data Source Wizard