PowerTools ActiveReports for .NET 9.0J > ActiveReportsユーザーガイド > サンプルとチュートリアル > チュートリアル > 共通のチュートリアル(ページレポート、RDLレポートとセクションレポート) > Professional > エンドユーザーレポートデザイナの作成(Professional) |
Designerコントロール(Professionalのみ)を使用して、デザイナ機能をアプリケーションに組み込み、エンドユーザーにレポート編集機能を提供することが出来ます。このチュートリアルでは、Windowsフォームアプリケーションに基本的なエンドユーザーレポートデザイナを作成する方法を示します。
注意: DesignerコントロールはWebアプリケーションでは使用できません。 |
このチュートリアルでは、以下の作業を行います。
このチュートリアルが完了すると、以下のようなエンドユーザーレポートデザイナが作成されます。
メモ: Designerコントロールまたはその他のActiveReportsコントロールをVisual Studioのツールボックスに追加する方法については、ActiveReportsコントロールを追加するを参照してください。 |
フォームへのコントロールの追加
コントロール | 親 | Name | Dock | プロパティ値 |
---|---|---|---|---|
ToolStripContainer | formDesigner | toolStripContainer | Fill | LeftToolStripPanel - Enabled = False RightToolStripPanel - Enabled = False |
SplitContainer | toolStripContainer | splitContainer | Fill | FixedPanel = Panel1 |
Designer | splitContainer.Panel2 | arDesigner | None | Anchor = Top, Bottom, Left, Right 必要に応じてサイズと位置を変更します。 |
TabControl | splitContainer.Panel2 | tabControl | None | Anchor = Right 必要に応じてサイズと位置を変更します。 |
ReportExplorer | tabControl.tabPage1 | arReportExplorer | None |
ReportDesigner = arDesigner |
LayerList | tabControl.tabPage2 | arLayerList | None |
ReportDesigner = arDesigner |
PropertyGrid | splitContainer.Panel2 | arPropertyGrid | None | Anchor = Top, Bottom, Right 必要に応じてサイズと位置を変更します。 |
Toolbox | splitContainer.Panel1 | arToolbox | Fill | - |
Dataツールボックスグループを作成する
以下のコードを追加して、ツールボックスにデータグループを作成します。このLoadToolsメソッドは、データツールボックスグループをツールボックスにロードするためにformDesigner_Loadイベントから呼び出します。
サンプルコードを以下に示します。
Visual Basic
Visual Basicコード(formDesignerクラスの上に貼り付けます) |
コードのコピー
|
---|---|
Imports GrapeCity.ActiveReports.Design
|
Visual Basicコード(formDesignerクラス内に貼り付けます) |
コードのコピー
|
---|---|
Private Sub LoadTools(ByVal arToolbox As Toolbox.Toolbox) ' Dataプロバイダを追加します。 Me.arToolbox.AddToolboxItem(New System.Drawing.Design.ToolboxItem(GetType(System.Data.DataSet)), "Data") Me.arToolbox.AddToolboxItem(New System.Drawing.Design.ToolboxItem(GetType(System.Data.DataView)), "Data") Me.arToolbox.AddToolboxItem(New System.Drawing.Design.ToolboxItem(GetType(System.Data.OleDb.OleDbConnection)), "Data") Me.arToolbox.AddToolboxItem(New System.Drawing.Design.ToolboxItem(GetType(System.Data.OleDb.OleDbDataAdapter)), "Data") Me.arToolbox.AddToolboxItem(New System.Drawing.Design.ToolboxItem(GetType(System.Data.Odbc.OdbcConnection)), "Data") Me.arToolbox.AddToolboxItem(New System.Drawing.Design.ToolboxItem(GetType(System.Data.Odbc.OdbcDataAdapter)), "Data") Me.arToolbox.AddToolboxItem(New System.Drawing.Design.ToolboxItem(GetType(System.Data.SqlClient.SqlConnection)), "Data") Me.arToolbox.AddToolboxItem(New System.Drawing.Design.ToolboxItem(GetType(System.Data.SqlClient.SqlDataAdapter)), "Data") End Sub |
C#
C#コード(formDesignerクラスの上に貼り付けます) |
コードのコピー
|
---|---|
using GrapeCity.ActiveReports.Design;
|
C#コード(formDesignerクラス内に貼り付けます) |
コードのコピー
|
---|---|
private void LoadTools(Toolbox.Toolbox arToolbox) { // Dataプロバイダを追加します。 this.arToolbox.AddToolboxItem(new System.Drawing.Design.ToolboxItem(typeof(System.Data.DataSet)), "Data"); this.arToolbox.AddToolboxItem(new System.Drawing.Design.ToolboxItem(typeof(System.Data.DataView)), "Data"); this.arToolbox.AddToolboxItem(new System.Drawing.Design.ToolboxItem(typeof(System.Data.OleDb.OleDbConnection)), "Data"); this.arToolbox.AddToolboxItem(new System.Drawing.Design.ToolboxItem(typeof(System.Data.OleDb.OleDbDataAdapter)), "Data"); this.arToolbox.AddToolboxItem(new System.Drawing.Design.ToolboxItem(typeof(System.Data.Odbc.OdbcConnection)), "Data"); this.arToolbox.AddToolboxItem(new System.Drawing.Design.ToolboxItem(typeof(System.Data.Odbc.OdbcDataAdapter)), "Data"); this.arToolbox.AddToolboxItem(new System.Drawing.Design.ToolboxItem(typeof(System.Data.SqlClient.SqlConnection)), "Data"); this.arToolbox.AddToolboxItem(new System.Drawing.Design.ToolboxItem(typeof(System.Data.SqlClient.SqlDataAdapter)), "Data"); } |
OnExitメソッドを追加する
Visual Basicコード(formDesignerクラス内に貼り付けます) |
コードのコピー
|
---|---|
Private Sub OnExit(ByVal sender As Object, ByVal e As EventArgs) MyBase.Close() End Sub |
C#コード(formDesignerクラス内に貼り付けます) |
コードのコピー
|
---|---|
private void OnExit(object sender, EventArgs e) { Close(); } |
ツールボックス、メニュー、ツールストリップを設定する
サンプルコードを以下に示します。
Visual Basic
Visual Basicコード(formDesigner Loadイベント内に貼り付けます) |
コードのコピー
|
---|---|
' ツールボックスにコントロールを追加します。 LoadTools(arToolbox) arDesigner.Toolbox = arToolbox ' メニューとツールストリップをフォームに追加します。 Dim menuStrip As ToolStrip = arDesigner.CreateToolStrips(DesignerToolStrips.Menu)(0) Dim fileMenu As ToolStripDropDownItem = CType(menuStrip.Items(0), ToolStripDropDownItem) ' [ファイル]メニューに終了コマンドを追加します。 fileMenu.DropDownItems.Add(New ToolStripMenuItem("終了", Nothing, AddressOf OnExit)) Dim panel As ToolStripPanel = toolStripContainer.TopToolStripPanel panel.Join(menuStrip, 0) panel.Join(arDesigner.CreateToolStrips(DesignerToolStrips.Zoom)(0), 1) panel.Join(arDesigner.CreateToolStrips(DesignerToolStrips.Undo)(0), 1) panel.Join(arDesigner.CreateToolStrips(DesignerToolStrips.Edit)(0), 1) panel.Join(arDesigner.CreateToolStrips(DesignerToolStrips.Report)(0), 1) panel.Join(arDesigner.CreateToolStrips(DesignerToolStrips.Layout)(0), 2) panel.Join(arDesigner.CreateToolStrips(DesignerToolStrips.Format)(0), 2) |
C#コード(formDesigner Loadイベント内に貼り付けます) |
コードのコピー
|
---|---|
// ツールボックスにコントロールを追加します。 LoadTools(arToolbox); arDesigner.Toolbox = arToolbox; // メニューとツールストリップをフォームに追加します。 ToolStrip menuStrip = arDesigner.CreateToolStrips(DesignerToolStrips.Menu)[0]; ToolStripDropDownItem fileMenu = (ToolStripDropDownItem)menuStrip.Items[0]; // [ファイル]メニューに終了コマンドを追加します。 fileMenu.DropDownItems.Add(new ToolStripMenuItem("終了", null, this.OnExit)); ToolStripPanel panel = ToolStripContainer.TopToolStripPanel; panel.Join(menuStrip, 0); panel.Join(arDesigner.CreateToolStrips(DesignerToolStrips.Zoom)[0], 1); panel.Join(arDesigner.CreateToolStrips(DesignerToolStrips.Undo)[0], 1); panel.Join(arDesigner.CreateToolStrips(DesignerToolStrips.Edit)[0], 1); panel.Join(arDesigner.CreateToolStrips(DesignerToolStrips.Report)[0], 1); panel.Join(arDesigner.CreateToolStrips(DesignerToolStrips.Layout)[0], 2); panel.Join(arDesigner.CreateToolStrips(DesignerToolStrips.Format)[0], 2); |
セクションレポートのレイヤー一覧を無効化
レイヤーはページレポートとRDLレポートのみでサポートされているため、セクションレポートではレイヤー一覧オプションを無効にします。以下の手順に従って、セクションレポートからレイヤー一覧を除去します。
Visual Basicコード(formDesignerクラスのコンストラクタ内に貼り付けます) |
コードのコピー
|
---|---|
' イベントハンドラを作成します。
Public Sub New()
InitializeComponent()
AddHandler Me.arDesigner.LayoutChanged, AddressOf OnLayoutChanged
End Sub
|
C#コード(formDesignerクラスのコンストラクタ内に貼り付けます) |
コードのコピー
|
---|---|
// イベントハンドラを作成します。 this.arDesigner.LayoutChanged += new LayoutChangedEventHandler(OnLayoutChanged); |
Visual Basicコード(formDesignerクラス内に貼り付けます) |
コードのコピー
|
---|---|
Private Sub OnLayoutChanged(ByVal sender As System.Object, ByVal e As LayoutChangedArgs) Handles arDesigner.LayoutChangedEnd Sub |
C#コード(formDesignerクラス内に貼り付けます) |
コードのコピー
|
---|---|
private void OnLayoutChanged(object sender, LayoutChangedArgs e){} |
Visual Basicコード(OnLayoutChanged関数内に貼り付けます) |
コードのコピー
|
---|---|
If arDesigner.ReportType = DesignerReportType.Section Then tabControl.TabPages.Remove(TabPage1) tabControl.TabPages.Remove(TabPage2) tabControl.TabPages.Add(TabPage1) tabControl.Refresh() End If If arDesigner.ReportType = DesignerReportType.Page Then tabControl.TabPages.Remove(TabPage1) tabControl.TabPages.Remove(TabPage2) tabControl.TabPages.Add(TabPage1) tabControl.TabPages.Add(TabPage2) tabControl.Refresh() End If If arDesigner.ReportType = DesignerReportType.Rdl Then tabControl.TabPages.Remove(TabPage1) tabControl.TabPages.Remove(TabPage2) tabControl.TabPages.Add(TabPage1) tabControl.TabPages.Add(TabPage2) tabControl.Refresh() End If |
C#コード(OnLayoutChanged関数内に貼り付けます) |
コードのコピー
|
---|---|
if (arDesigner.ReportType == DesignerReportType.Section) { tabControl.TabPages.Remove(tabPage1); tabControl.TabPages.Remove(tabPage2); tabControl.TabPages.Add(tabPage1); tabControl.Refresh(); } if (arDesigner.ReportType == DesignerReportType.Page) { tabControl.TabPages.Remove(tabPage1); tabControl.TabPages.Remove(tabPage2); tabControl.TabPages.Add(tabPage1); tabControl.TabPages.Add(tabPage2); tabControl.Refresh(); } if (arDesigner.ReportType == DesignerReportType.Rdl) { tabControl.TabPages.Remove(tabPage1); tabControl.TabPages.Remove(tabPage2); tabControl.TabPages.Add(tabPage1); tabControl.TabPages.Add(tabPage2); tabControl.Refresh(); } |
Visual Basicコード(formDesigner_Loadイベント内に貼り付けます) |
コードのコピー
|
---|---|
OnLayoutChanged(Nothing, Nothing) |
C#コード(formDesigner_Loadイベント内に貼り付けます) |
コードのコピー
|
---|---|
OnLayoutChanged(null, null); |
エンドユーザーレポートデザイナを表示する
このエンドユーザーレポートデザイナをさらにカスタマイズするため、たとえばページレポートまたはRDLレポートのツールボックスで[セクションレポート]タブを無効にできます。これを含むカスタマイズの例については、「エンドユーザーデザイナ」サンプルを参照してください。