FlexReport for WPF
実行時の FlexReport のロード
FlexReport の操作 > デスクトップ用 FlexReport の開発 > 実行時の FlexReport のロード

実行時にレポートをロードするには、レポート定義ファイルとビューアが必要です。このようなアプリケーションの主な長所は、レポート形式を変更しても、アプリケーションを更新する必要がないことです。新しいレポート定義ファイルをユーザーに送るだけで済みます。

実行時にロードされるレポートを備えたアプリケーションを作成するには、次の手順に従います。

  1. C1FlexReportDesigner アプリケーションで、必要なレポートをすべて作成します。詳細については、「クイックスタート」を参照してください。
  2. 次のコントロールをアプリケーションに追加します。
    • fv という名前の C1FlexViewerPanel コントロール
    • cmbReport という名前の ComboList コントロール
    • status という名前の StatusBar コントロール
    • button1 という名前の button コントロール
  3. コードビューで、次の Import 文をファイルの先頭に追加します。
    Imports C1.Win.FlexReport       
    Imports System.IO
    
    using C1.Win.FlexReport;
    using System.IO;
    

    これにより、完全名前空間を指定しなくても、C1FlexReportSystem.IO のクラスとオブジェクトを参照できます。

  4. レポート定義ファイルを読み取り、すべてのレポートのリストを構築し、ユーザーが選択したレポートをレンダリングために、次のコードをボタンクリックイベントに追加します。
           
    Private Sub btnRender_Click(sender As Object, e As EventArgs)
    ' アプリケーションパスを取得します      
    Dim appPath As String
    appPath = System.IO.Path.GetDirectoryName
    (System.Reflection.Assembly.GetExecutingAssembly().Location).ToLower()
    Dim i As Integer = appPath.IndexOf(vbBack & "in")
    If(i < 0) Then
    i = appPath.IndexOf(vbBack & "in")
    End If
    If(i > 0) Then
    appPath = appPath.Remove(i, appPath.Length - i)
    End If
      ' レポート定義ファイルからレポートの名前を取得します      
    Dim m_ReportDefinitionFile As String = appPath &
    Convert.ToString("¥Data¥Products Report.flxr")
    Dim reports As String() = C1FlexReport.GetReportList(m_ReportDefinitionFile)
    ' コンボボックスにデータを設定します        
    cmbReport.Items.Clear()
    
    
    For Each report As String In reports
    cmbReport.Items.Add(report)
    Next
    
    Try
    Cursor = System.Windows.Input.Cursors.Wait
    
      ' レポートをロードします       
    fv.StatusText = "Loading" + cmbReport.Text
    rep.Load(m_ReportDefinitionFile, cmbReport.Text)
    
    
    ' 印刷プレビューコントロールにレンダリングします       
    fv.StatusText = "Rendering" + cmbReport.Text
    fv.DocumentSource = rep
    
      ' 印刷プレビューコントロールにフォーカスを設定します
    fv.Focus()
    Finally
    Cursor = InlineAssignHelper(Cursor, System.Windows.Input.Cursors.Arrow)
    End Try
    End Sub
    
    private void btnRender_Click(object sender, EventArgs e)
    {
      // アプリケーションパスを取得します         
      string appPath;
      appPath = System.IO.Path.GetDirectoryName
      (System.Reflection.Assembly.GetExecutingAssembly().Location).ToLower();
      int i = appPath.IndexOf("\bin");
      if ((i < 0)) {
        i = appPath.IndexOf("\bin");
      }
      if ((i > 0)) {
        appPath = appPath.Remove(i, appPath.Length - i);
      }
      // レポート定義ファイルからレポートの名前を取得します      
      string m_ReportDefinitionFile = appPath + @"¥Data¥Products Report.flxr";
      string[] reports = C1FlexReport.GetReportList(m_ReportDefinitionFile);
      // コンボボックスにデータを設定します       
      cmbReport.Items.Clear();
    
      foreach(string report in reports) {
        cmbReport.Items.Add(report);
      }
    
      try {
        Cursor = System.Windows.Input.Cursors.Wait;
    
        // レポートをロードします       
        fv.StatusText = "Loading" + cmbReport.Text;
        rep.Load(m_ReportDefinitionFile, cmbReport.Text);
    
    
        //印刷プレビューコントロールにレンダリングします        
        fv.StatusText = "Rendering" + cmbReport.Text;
        fv.DocumentSource = rep;
    
        // 印刷プレビューコントロールにフォーカスを設定します
        fv.Focus();
      } finally {
        Cursor = Cursor = System.Windows.Input.Cursors.Arrow;
      }
    }
    

    このコードは、最初に、レポート定義が格納されているファイルの場所を取得します。それには、システム定義の Path クラスと Application クラスの静的メソッドを使用します。レポート定義ファイルの場所と名前に合わせてコードを調整してください。

    次に、GetReportList メソッドを使用してレポート定義ファイル(手順 1 で作成)内のすべてのレポート名を含む配列を取得し、ユーザーがレポートを選択するためのコンボボックスにレポート名を挿入します。

  5. プロジェクトを実行します。