バージョン

ツリー

Tree エレメントは、親ノード、特にルート ノードが子ノードと階層の下位にあるすべてのノードをどのように所有するかを示すことによって、階層関係を表示するために役に立ちます。Tree エレメントのオブジェクト モデルは、ツリーのルート ノードを識別するために Root プロパティを設定したメインのツリー オブジェクトで構成されています。ルート ノード(タイプ INode の)への参照を取得したら、INode インターフェイスから AddNode メソッドを呼び出して、追加ノードをツリーに追加することができます。希望の数だけノードを追加できますが、ルート ノードはひとつしかありません。

すべての パターン コンテンツと同じように、パターンを以下のツリー エレメントに追加することによって、スタイル変更を実装できます。

  • ツリー全体( TreePattern クラスはスタイルを ITree インターフェイスに適用)

  • コンテンツではなくツリーのノード( TreeNodePattern クラスはスタイルを INode インターフェイスを適用)

  • ツリー ノードのキャプション( TreeCaptionPattern クラスはスタイルを ICaption インターフェイスに適用)

上記のリストから分かるように、各パターンはツリーのより詳細な階層に適用されます。それでも十分でない場合には、各ノードで特定のプロパティを設定せうることにより、各パターンをオーバーライドすることができます。

DocumentEngine Trees 01.png

以下のコードはルート ノードがひとつ、子ノードが 7 つのツリーを作成します。最初にツリー、ノード、キャプションのパターンを作成し、ツリーを作成して、次にノードを追加します。

  1. ツリー、ノード、キャプションのパターンを作成します。

Visual Basic の場合:

Imports Infragistics.Documents.Reports.Reports.Report
.
.
.
' ツリー全体の新しいパターンを作成します。
Dim treePattern As New Infragistics.Documents.Reports.Reports.Report.Tree.TreePattern()
treePattern.Background = New Background(Brushes.LightSlateGray)
treePattern.Paddings = New Paddings(5)
treePattern.Borders = New Borders(New Pen(New Color(0, 0, 0)), 5)
' ツリー ノードの新しいパターンを作成します。
Dim treeNodePattern As New Infragistics.Documents.Reports.Reports.Report.Tree.TreeNodePattern()
treeNodePattern.Lines = New Lines(New Pen(New Color(0, 0, 0)))
treeNodePattern.Interval = 5
treeNodePattern.Indent = 25
' キャプションの新しいパターンを作成します。
Dim treeCaptionPattern As New Infragistics.Documents.Reports.Reports.Report.Tree.TreeCaptionPattern()
treeCaptionPattern.Background = New Background(Brushes.LightSteelBlue)
treeCaptionPattern.Borders = New Borders(New Pen(New Color(0, 0, 0)), 3)
treeCaptionPattern.Paddings = New Paddings(3)

C# の場合:

using Infragistics.Documents.Reports.Reports.Report;
.
.
.
// ツリー全体の新しいパターンを作成します。
Infragistics.Documents.Reports.Reports.Report.Tree.TreePattern treePattern = new TreePattern();
treePattern.Background = new Background(Brushes.LightSlateGray);
treePattern.Paddings = new Paddings(5);
treePattern.Borders = new Borders(new Pen(new Color(0, 0, 0)), 5);
// ツリー ノードの新しいパターンを作成します。
Infragistics.Documents.Reports.Reports.Report.Tree.TreeNodePattern treeNodePattern = new TreeNodePattern();
treeNodePattern.Lines = new Lines(new Pen(new Color(0, 0, 0)));
treeNodePattern.Interval = 5;
treeNodePattern.Indent = 25;
// キャプションの新しいパターンを作成します。
Infragistics.Documents.Reports.Reports.Report.Tree.TreeCaptionPattern treeCaptionPattern = new TreeCaptionPattern();
treeCaptionPattern.Background = new Background(Brushes.LightSteelBlue);
treeCaptionPattern.Borders = new Borders(new Pen(new Color(0, 0, 0)), 3);
treeCaptionPattern.Paddings = new Paddings(3);
  1. ツリーを作成し、ツリー パターンを適用して、次にルート ノードのキャプションを追加します。

Visual Basic の場合:

' ツリーを作成してツリーのルート ノードへの
' 参照を取得します。
Dim tree As Infragistics.Documents.Reports.Reports.Report.Tree.ITree = section1.AddTree()
tree.ApplyPattern(treePattern)
tree.Width = New RelativeWidth(75)
Dim rootNode As Infragistics.Documents.Reports.Reports.Report.Tree.INode = tree.Root
treeNodePattern.Apply(rootNode)
Dim nodeText As Infragistics.Documents.Reports.Reports.Report.QuickText.IQuickText
' キャプションをルート ノードに追加します。
Dim rootCaption As Infragistics.Documents.Reports.Reports.Report.Tree.ICaption = rootNode.Caption
nodeText = rootCaption.AddQuickText("Alignment Options")
nodeText.Font = New Infragistics.Documents.Reports.Reports.Graphics.Font("Verdana", 24)

C# の場合:

// ツリーを作成してツリーのルート ノードへの
// 参照を取得します。
Infragistics.Documents.Reports.Reports.Report.Tree.ITree tree = section1.AddTree();
tree.ApplyPattern(treePattern);
tree.Width = new RelativeWidth(75);
Infragistics.Documents.Reports.Reports.Report.Tree.INode rootNode = tree.Root;
treeNodePattern.Apply(rootNode);
Infragistics.Documents.Reports.Reports.Report.QuickText.IQuickText nodeText;
// キャプションをルート ノードに追加します。
Infragistics.Documents.Reports.Reports.Report.Tree.ICaption rootCaption = rootNode.Caption;
nodeText = rootCaption.AddQuickText("Alignment Options");
nodeText.Font = new Infragistics.Documents.Reports.Reports.Graphics.Font("Verdana", 24);
  1. 子ノードを作成します。

以下のコードは、 列挙体でループしてツリー ノードを格納するための文字列を取得します。ループが文字列「Center」または「Middle」に遭遇すると、これらのノードのパターンをオーバーライドして背景色を白に変更します。

Visual Basic の場合:

Dim childNode As Infragistics.Documents.Reports.Reports.Report.Tree.INode;
Dim childNodeCaption As Infragistics.Documents.Reports.Reports.Report.Tree.ICaption;
For Each s As String In [Enum].GetNames(GetType(Alignment))
	If s = "Center" OrElse s = "Middle" Then
		childNode = rootNode.AddNode()
		childNodeCaption = childNode.Caption
		treeCaptionPattern.Apply(childNodeCaption)
		' TreeCaptionPattern の背景をオーバーライドします。
		childNodeCaption.Background = New Background(Brushes.White)
		nodeText = childNodeCaption.AddQuickText(s)
		nodeText.Font = New Infragistics.Documents.Reports.Reports.Graphics.Font("Verdana", 24)
	Else
		childNode = rootNode.AddNode()
		childNodeCaption = childNode.Caption
		treeCaptionPattern.Apply(childNodeCaption)
		nodeText = childNodeCaption.AddQuickText(s)
		nodeText.Font = New Infragistics.Documents.Reports.Reports.Graphics.Font("Verdana", 24)
	End If
Next s

C# の場合:

INode childNode;
ICaption childNodeCaption;
foreach (string s in Enum.GetNames(typeof(Alignment)))
{
	if (s == "Center" || s == "Middle")
	{
		childNode = rootNode.AddNode();
		childNodeCaption = childNode.Caption;
		treeCaptionPattern.Apply(childNodeCaption);
		// TreeCaptionPattern の背景をオーバーライドします。
		childNodeCaption.Background = new Background(Brushes.White);
		nodeText = childNodeCaption.AddQuickText(s);
		nodeText.Font = new Infragistics.Documents.Reports.Reports.Graphics.Font("Verdana", 24);
	}
	else
	{
		childNode = rootNode.AddNode();
		childNodeCaption = childNode.Caption;
		treeCaptionPattern.Apply(childNodeCaption);
		nodeText = childNodeCaption.AddQuickText(s);
		nodeText.Font = new Infragistics.Documents.Reports.Reports.Graphics.Font("Verdana", 24);
	}
}