コンテナ(フォーム)を組み立てる
それではさっそく、ランタイムデザイナの作成に入りましょう。まずVisual Studioで空のソリューションを作成してください。ソリューションを作成したらそれを右クリックして、[追加]-[新しいプロジェクト]の順に選択し、「新しいプロジェクトの追加」ダイアログを表示させます。ここで、プロジェクトテンプレートは「Windows フォーム アプリケーション」を選択してください。プロジェクトを作成すると、Visual StudioのデザイナにデフォルトのFormコントロールが表示されるので、ここにPanelコントロールとSplitterコントロールを配置していきます。
まず最初は、左側のツールバーを配置するエリアを作成します。フォームへPanelコントロールをドロップし、DockプロパティをLeftに設定してください。それから、フォームへSplitterコントロールをドロップし、Panelコントロールと同じようにDockプロパティをLeftに設定してください。
次に右側の、レポートエクスプローラとプロパティグリッドを表示するエリアを作成します。左側のエリアを作ったときと同じように、PanelコントロールとSplitterコントロールをフォームへドロップして、それぞれのDockプロパティを今度はRightに設定してください。
右側のエリアはさらに上下2つに分かれているので、ここにPanelコントロールとSplitterコントロールをもう1つ追加します。DockプロパティはTopに設定します。
図はここまでの作業で配置した各PanelコントロールのBackColorプロパティを変更して、コントロールの境界がわかるようにしたものです。一度、このプロジェクトをデバッグ実行して、Panelの各領域の境界がドラッグ&ドロップで変更可能かどうか確認してみてください。
コントロールを配置する
フォームへの配置とプロパティの設定
フォームの土台部分の準備ができたら、次はコントロールをフォームに配置していきます。ツールボックスにActiveReportsのコントロールが追加されていない場合は、第1回の記事を参考に、コントロールを追加してください。
ツールボックスからDesignerコントロールを選択し、フォーム中央の領域にドロップしてください。Designerコントロールの初期サイズはかなり大きいのでドロップすると大部分がはみ出してしまいますが、ここで特にサイズを調整する必要はありません。Designerコントロールをドロップしたら、DockプロパティをFillに設定すると、サイズが自動的に調整され、フォームの中にすっぽりと納まります。
同じように、右上の領域にはReportExplorerコントロールを、右下の領域にはPropertyGridコントロールをそれぞれドロップし、DockプロパティをFillに設定してください。
コントロールを配置したら、次は各コントロールを相互に関連付けていきます。まず、DesignerコントロールのPropertyGridプロパティに、いま追加したPropertyGridコントロール(デフォルトではpropertyGrid1)を設定します。それから、ReportExplorerコントロールのReportDesignerプロパティに、Designerコントロール(デフォルトではdesigner1)を設定します。
Toolboxコントロールを配置する
次は、ランタイムデザイナにコントロールを配置するためのツールボックス部分を作成します。今回は、ツールボックス部分のコントロールとして、ActiveReports付属のサンプルを使用することにします。
ActiveReprtsのインストールフォルダ(通常はC:\Program Files\ActiveReportsNET3)に含まれるSamplesフォルダには、ActiveReportsの機能を活用した、実用的なサンプルが多数収録されています。ここで、Samples\VS2005\CS\Professional\RuntimeDesignerフォルダ(VBの場合はSamples\VS2005\VB\Professional\RuntimeDesignerフォルダになります)にあるToolboxClassLibというフォルダを適当な場所へコピーしてください。
フォルダのコピーが終わったら、Visual Studioでランタイムデザイナを作成しているソリューションを開き、右クリックメニューから[追加]-[既存のプロジェクト]を選んで、ToolboxClassLibフォルダの中にあるToolboxClassLib.csproj(vbproj)を選択します。Visual Studio 2008を使用している方は、ToolboxClassLib_2k8.csproj(vbproj)のほうを選択してください。ソリューションにプロジェクトを追加すると、Visual Studioのツールボックスに「ToolboxClassLib(VS2008の場合はToolboxClassLib_2k8)コンポーネント」というタブが作成され、Toolboxコントロールが利用可能になるので、これをフォーム左側のPanelコントロールへドロップします。
サンプルのToolboxコントロールはプロパティグリッドにDockプロパティが出てこないので、フォームのLoadイベントで値を設定します。Loadイベントでは、DesignerコントロールのToolboxプロパティに、いま追加したToolboxコントロールを指定します。また、ToolboxコントロールのDockプロパティをFillに設定します。
private void Form1_Load(object sender, EventArgs e) { this.designer1.Toolbox = this.toolbox1; this.toolbox1.Dock = DockStyle.Fill; }
Private Sub Form1_Load(ByVal sender As Object, ByVal e As EventArgs) _ Handles MyBase.Load Me.Designer1.Toolbox = Me.Toolbox1 Me.Toolbox1.Dock = DockStyle.Fill End Sub