ActiveReports for .NET 18.0J
レポートでのカスタムコントロールの使用
ActiveReportsユーザーガイド > 基本操作 > セクションレポートの基本操作 > レポートコントロールの操作 > レポートでのカスタムコントロールの使用

セクションレポートでは、デザイナ面に配置されたサードパーティコントロールはカスタムコントロールとして認識されています。型キャスすることで、カスタムコントロールのプロパティをアクセスできます。

次の手順は、Visual StudioのTreeViewコントロールに非表示にされたTextBoxコントロールを使用します。プロジェクトにセクションレポート(コード)のテンプレートを既に追加したことを前提にしています。詳細は、「クイックスタート」を参照してください。

レポート上にTreeViewコントロールを追加する

  1. Visual Studioツールボックスの[コモンコントロール]タブから、TreeViewコントロールをレポートのdetailセクション上に配置します。
  2. [プロパティ]ウインドウで、追加されたコントロールの名前は[CustomControl1]であることを確認します。

レポートにデータおよび非表示のTextBoxコントロールを追加する

  1. レポートをサンプルデータソース(NWind.mdb)に接続します。NorthWindデータベース(..\ActiveReportsNET18\Samples\Data\Nwind.mdb)へのアクセス権限が必要です。次の手順は、NorthWindデータベース(NWind.mdb)のOrdersテーブルを使用しています。
  2. レポートエクスプローラから、次のフィールドをdetailセクション上にドラッグ&ドロップします。
    • ShipCountry
    • ShipCity
    • CustomerID
    • EmployeeID
  3. デザイナ面上にあるすべてのTextBoxコントロールを選択し、[プロパティ]ウインドウでVisibleプロパティをFalseに設定します。

TreeViewコントロールにノードを追加する

  1. デザイナ面を右クリックし、[コードの表示]を選択します。
  2. レポートクラスに次のコードを記載し、TreeViewコントロールにノードを追加する関数を作成します。

    Visual Basic

    Visual Basicコード (レポートクラス内に貼り付けます。)
    コードのコピー
    Private Function AddNodeToTreeView(ByVal colNodes As TreeNodeCollection, ByVal sText As String) As TreeNode
       Dim objTreeNode As TreeNode
       objTreeNode = New TreeNode(sText)
       colNodes.Add(objTreeNode)
       Return objTreeNode
    End Function
    

    C#

    C#コード (レポートクラス内に貼り付けます。)
    コードのコピー
    private TreeNode AddNodeToTreeView(TreeNodeCollection colNodes, string sText) 
    { 
        TreeNode objTreeNode; 
        objTreeNode = new TreeNode(sText); 
        colNodes.Add(objTreeNode); 
        return objTreeNode; 
    }
    

コードでTreeViewコントロールのプロパティをアクセスして、データを割り当てる

  1. Detailセクションをダブルクリックし、Detail_Formatイベントのイベント処理メソッドを作成します。
  2. TreeViewのプロパティをアクセスし、非表示のTextBoxコントロールからデータを割り当てるには、次のコードを追加します。

    Visual Basic

    Visual BasicコードDetail_Formatイベント内に貼り付けます。
    コードのコピー

    'カスタムコントロールをTreeViewとして型キャストします。
    Dim TreeView1 As New TreeView
    TreeView1 = CType(Me.CustomControl1.Control, TreeView)

    'ツリーのノードを作成します。
    Dim objCountryTreeNode As TreeNode
    'ノードに非表示のTextBoxからテキストを割り当てます。
    objCountryTreeNode = AddNodeToTreeView(TreeView1.Nodes, Me.txtShipCountry1.Text)
    '子ノードを追加します。
    AddNodeToTreeView(objCountryTreeNode.Nodes, Me.txtShipCity1.Text)
    '子ノードを表示するには、メインノードを展開します。
    objCountryTreeNode.Expand()

    'もう1つのメインノードを追加します。
    Dim objCustomerTreeNode As TreeNode
    objCustomerTreeNode = AddNodeToTreeView(TreeView1.Nodes, Me.txtCustomerID1.Text)
    AddNodeToTreeView(objCustomerTreeNode.Nodes, Me.txtEmployeeID1.Text)
    objCustomerTreeNode.Expand()

    C#

    C#コードDetail_Formatイベント内に貼り付けます。
    コードのコピー
    //カスタムコントロールをTreeViewとして型キャストします。
    TreeView TreeView1 = new TreeView();
    TreeView1 = (TreeView)this.customControl1.Control; //ツリーのノードを作成します。
    TreeNode objCountryTreeNode;
    //ノードに非表示のTextBoxからテキストを割り当てます。
    objCountryTreeNode = AddNodeToTreeView(TreeView1.Nodes, this.txtShipCountry1.Text);
    //子ノードを追加します。
    AddNodeToTreeView(objCountryTreeNode.Nodes, this.txtShipCity1.Text);
    //子ノードを表示するには、メインノードを展開します。
    objCountryTreeNode.Expand(); //もう1つのメインノードを追加します。
    TreeNode objCustomerTreeNode;
    objCustomerTreeNode = AddNodeToTreeView(TreeView1.Nodes, this.txtCustomerID1.Text);
    AddNodeToTreeView(objCustomerTreeNode.Nodes, this.txtEmployeeID1.Text);
    objCustomerTreeNode.Expand();
関連トピック