PowerTools ActiveReports for .NET 9.0J
レポートテンプレートの継承
すべて展開すべて展開
すべて折りたたむすべて折りたたむ

セクションレポートでは、基本クラスを作成し、そのレポートを他のレポートが継承できるテンプレートとして使用できます。各レポートに共通する機能(例えば、同一のページヘッダとフッタ)を実装する場合は、共通項目を親レポートに作成し、他のレポートに継承します。継承の方法には、レポートのヘッダやフッタなどのレイアウト部分を継承する「レポート設計時の継承」と、レポートの処理コード部分を継承する「レポート実行時の継承」の2通りが存在します。

レポート実行時の継承

各レポートに共通するプロパティやメソッドを実装した基本クラスを作成し、このクラスを継承することができます。詳細については、「継承 サンプル」を参照してください。

レポート設計時の継承

設計時にレポートを継承する方法を示します。ここでは、親レポート(BaseReport)と親レポートを継承した子レポート(DerivedReport)の2つをプロジェクトに追加しています。以下の手順により、親レポートのページヘッダとページフッタのデザイン情報が、子レポートに引き継がれることを確認できます。

注意:

  • 親レポートと継承した子レポートで同じのコントロール名がある場合、プロジェクトをコンパイルして実行することは可能ですが、レイアウトは保存できません。
  • Detailセクションのデザイン情報を継承することはできません。
  • 静的な情報のみ継承可能です。たとえば、PageHeaderやGroupHeaderなどに配置したコントロールをデータソースの内容に応じて動的に変更するような場合には、レポート設計時の継承は利用できません。

親レポートを作成する

  1. Visual Studioのプロジェクトに、セクションレポート(コード)テンプレートを追加し、レポートの名前を「BaseReport」に設定します。詳細は、「プロジェクトにレポートを追加する」を参照してください。
  2. レポートテンプレートで、Visual Studioのツールボックスから以下のコントロールをBaseReportに指定した位置に追加し、プロパティを設定します。

    BaseReportに追加するコントロール

  3. デザイナ面の周囲にあるグレーの領域を右クリックし、[プロパティ]ウインドウを開きます。
  4. [プロパティ]ウインドウでMasterReportプロパティを「True」に変更します。Detailセクションがグレーに表示され、編集不可になったことが確認できます。

親レポートは、ページヘッダおよびページフッタセクションを編集できます。一方、親レポートを継承する子レポートを作成する場合は、Detailセクションのみ編集できます。

注意: 親レポートの設計が完了するまでは、MasterReportプロパティを「True」に設定しないでください。このプロパティをTrueに設定すると、レポートのデザイナファイルが変更されます。

親レポートのレイアウトを継承する

次の手順は、もう1つのセクションレポート(コード)テンプレートを既に追加したことを前提にしています。このレポートは、Detailセクションのレイアウトを作成するコンテンツレポートのように動作します。

  1. Visual Studioプロジェクトに、セクションレポート(コード)テンプレートを追加し、レポートの名前を「DerivedReport」に設定します。
  2. ソリューションエクスプローラからDerivedReportを右クリックし、[コードの表示]を選択します。このとき、Visual Basicを使用している場合は、DerivedReport.vbファイルの[コードの表示]ではなく、ソリューションエクスプローラの[すべてのファイルを表示]ボタンをクリックして表示される、DerivedReport.Designer.vb(Partialクラスのファイル)の[コードの表示]を選択してください。
  3. コードウィンドウで、継承元としてデフォルト設定されているGrapeCity.ActiveReports.SectionReportを親レポートに変更します。
    注意: 親レポートを継承すると、子レポート内の既存のレイアウトが失われます。GrapeCity.ActiveReports.SectionReportに戻しても、レポート内の元のレイアウトを取得できませんので、注意してください。

    Visual Basic

    C#

  4. レポートを閉じて、[ビルド]メニューから[ソリューションのリビルド]を選択します。レポートを再度開くと、Detailセクションは自由に編集できますが、親レポートから継承されているPageHeaderとPageFooterの各セクションは、ここで編集することはできません。

    メモ: 親レポートの変更を子レポートに反映するためには、プロジェクトをリビルドする必要があります。

 

 


©2003-2015 GrapeCity inc. All rights reserved.