method Frames.Add ([Nodes as Variant])
Adds an Frame object to the collection and returns a reference to the newly created object.

TypeDescription
Nodes as Variant A String expression that defines a collection of nodes that defines the frame. The list contains key of the nodes, separated by comma character as explained bellow. For instance "AK1,AK2" or "AK1(child)"
ReturnDescription
FrameA Frame object that holds information about frame's drawing options.
The Add method adds a new frame to the chart. A frame is defined by a union of nodes. The Nodes property gives access to the chart's nodes collection. By default, the frame shows a thick black-border around giving nodes. The Visible property specifies whether the frame is visible or shown. The ShowOnBackground property indicates whether the frame is displayed on the back or front of the chart.

The Nodes parameter ( equivalent with the Nodes property of the Frame object ) of the Add method defines the list of nodes to be included in the frame, separated by comma character (,) as follows:

For instance:

Once a new frame is added you can:

The following screen shot shows a thick black-border around child nodes of the root node ( "root(child)" ):

The following screen shot shows an EBN object around child nodes of the root node ( "root(child)" ):

 

The following screen shot shows a pattern + border around child nodes of the root node ( "root(child)" ):

The following screen shot shows a a text around child nodes of the root node ( "root(child)" ):

 

The following sample shows how you can visually group nodes that have the same parent but also have other siblings:

VBA (MS Access, Excell...)

With ChartView1
	.BeginUpdate 
	With .Root
		.AddAssistant "Assistant 1"
		.AddAssistant "Assistant 2"
	End With
	With .Nodes
		.Add "Child <b>1</b>",,"1234"
		.Add "Sub 1","1234","AK1"
		.Add "Sub 2","1234","AK2"
		.Add "Sub 3","1234"
		.Add("Child <b>2.1</b>").AddGroup "Child <b>2.2</b>"
	End With
	With .Frames.Add("AK1,AK2").Pattern
		.Type = 261 ' PatternEnum.exPatternFrame Or PatternEnum.exPatternFDiagonal
		.Color = RGB(190,190,190)
		.FrameColor = RGB(128,128,128)
	End With
	.EndUpdate 
End With

VB6

With ChartView1
	.BeginUpdate 
	With .Root
		.AddAssistant "Assistant 1"
		.AddAssistant "Assistant 2"
	End With
	With .Nodes
		.Add "Child <b>1</b>",,"1234"
		.Add "Sub 1","1234","AK1"
		.Add "Sub 2","1234","AK2"
		.Add "Sub 3","1234"
		.Add("Child <b>2.1</b>").AddGroup "Child <b>2.2</b>"
	End With
	With .Frames.Add("AK1,AK2").Pattern
		.Type = PatternEnum.exPatternFrame Or PatternEnum.exPatternFDiagonal
		.Color = RGB(190,190,190)
		.FrameColor = RGB(128,128,128)
	End With
	.EndUpdate 
End With

VB.NET

With Exchartview1
	.BeginUpdate()
	With .Root
		.AddAssistant("Assistant 1")
		.AddAssistant("Assistant 2")
	End With
	With .Nodes
		.Add("Child <b>1</b>",,"1234")
		.Add("Sub 1","1234","AK1")
		.Add("Sub 2","1234","AK2")
		.Add("Sub 3","1234")
		.Add("Child <b>2.1</b>").AddGroup("Child <b>2.2</b>")
	End With
	With .Frames.Add("AK1,AK2").Pattern
		.Type = exontrol.EXORGCHARTLib.PatternEnum.exPatternFrame Or exontrol.EXORGCHARTLib.PatternEnum.exPatternFDiagonal
		.Color = Color.FromArgb(190,190,190)
		.FrameColor = Color.FromArgb(128,128,128)
	End With
	.EndUpdate()
End With

VB.NET for /COM

With AxChartView1
	.BeginUpdate()
	With .Root
		.AddAssistant("Assistant 1")
		.AddAssistant("Assistant 2")
	End With
	With .Nodes
		.Add("Child <b>1</b>",,"1234")
		.Add("Sub 1","1234","AK1")
		.Add("Sub 2","1234","AK2")
		.Add("Sub 3","1234")
		.Add("Child <b>2.1</b>").AddGroup("Child <b>2.2</b>")
	End With
	With .Frames.Add("AK1,AK2").Pattern
		.Type = EXORGCHARTLib.PatternEnum.exPatternFrame Or EXORGCHARTLib.PatternEnum.exPatternFDiagonal
		.Color = RGB(190,190,190)
		.FrameColor = RGB(128,128,128)
	End With
	.EndUpdate()
End With

C++

/*
	Copy and paste the following directives to your header file as
	it defines the namespace 'EXORGCHARTLib' for the library: 'ExOrgChart 1.0 Control Library'

	#import <ExOrgChart.dll>
	using namespace EXORGCHARTLib;
*/
EXORGCHARTLib::IChartViewPtr spChartView1 = GetDlgItem(IDC_CHARTVIEW1)->GetControlUnknown();
spChartView1->BeginUpdate();
EXORGCHARTLib::INodePtr var_Node = spChartView1->GetRoot();
	var_Node->AddAssistant(L"Assistant 1",vtMissing,vtMissing);
	var_Node->AddAssistant(L"Assistant 2",vtMissing,vtMissing);
EXORGCHARTLib::INodesPtr var_Nodes = spChartView1->GetNodes();
	var_Nodes->Add(L"Child <b>1</b>",vtMissing,"1234",vtMissing,vtMissing);
	var_Nodes->Add(L"Sub 1","1234","AK1",vtMissing,vtMissing);
	var_Nodes->Add(L"Sub 2","1234","AK2",vtMissing,vtMissing);
	var_Nodes->Add(L"Sub 3","1234",vtMissing,vtMissing,vtMissing);
	var_Nodes->Add(L"Child <b>2.1</b>",vtMissing,vtMissing,vtMissing,vtMissing)->AddGroup(L"Child <b>2.2</b>",vtMissing,vtMissing);
EXORGCHARTLib::IPatternPtr var_Pattern = spChartView1->GetFrames()->Add("AK1,AK2")->GetPattern();
	var_Pattern->PutType(EXORGCHARTLib::PatternEnum(EXORGCHARTLib::exPatternFrame | EXORGCHARTLib::exPatternFDiagonal));
	var_Pattern->PutColor(RGB(190,190,190));
	var_Pattern->PutFrameColor(RGB(128,128,128));
spChartView1->EndUpdate();

C++ Builder

ChartView1->BeginUpdate();
Exorgchartlib_tlb::INodePtr var_Node = ChartView1->Root;
	var_Node->AddAssistant(L"Assistant 1",TNoParam(),TNoParam());
	var_Node->AddAssistant(L"Assistant 2",TNoParam(),TNoParam());
Exorgchartlib_tlb::INodesPtr var_Nodes = ChartView1->Nodes;
	var_Nodes->Add(L"Child <b>1</b>",TNoParam(),TVariant("1234"),TNoParam(),TNoParam());
	var_Nodes->Add(L"Sub 1",TVariant("1234"),TVariant("AK1"),TNoParam(),TNoParam());
	var_Nodes->Add(L"Sub 2",TVariant("1234"),TVariant("AK2"),TNoParam(),TNoParam());
	var_Nodes->Add(L"Sub 3",TVariant("1234"),TNoParam(),TNoParam(),TNoParam());
	var_Nodes->Add(L"Child <b>2.1</b>",TNoParam(),TNoParam(),TNoParam(),TNoParam())->AddGroup(L"Child <b>2.2</b>",TNoParam(),TNoParam());
Exorgchartlib_tlb::IPatternPtr var_Pattern = ChartView1->Frames->Add(TVariant("AK1,AK2"))->Pattern;
	var_Pattern->Type = Exorgchartlib_tlb::PatternEnum::exPatternFrame | Exorgchartlib_tlb::PatternEnum::exPatternFDiagonal;
	var_Pattern->Color = RGB(190,190,190);
	var_Pattern->FrameColor = RGB(128,128,128);
ChartView1->EndUpdate();

C#

exchartview1.BeginUpdate();
exontrol.EXORGCHARTLib.Node var_Node = exchartview1.Root;
	var_Node.AddAssistant("Assistant 1",null,null);
	var_Node.AddAssistant("Assistant 2",null,null);
exontrol.EXORGCHARTLib.Nodes var_Nodes = exchartview1.Nodes;
	var_Nodes.Add("Child <b>1</b>",null,"1234",null,null);
	var_Nodes.Add("Sub 1","1234","AK1",null,null);
	var_Nodes.Add("Sub 2","1234","AK2",null,null);
	var_Nodes.Add("Sub 3","1234",null,null,null);
	var_Nodes.Add("Child <b>2.1</b>",null,null,null,null).AddGroup("Child <b>2.2</b>",null,null);
exontrol.EXORGCHARTLib.Pattern var_Pattern = exchartview1.Frames.Add("AK1,AK2").Pattern;
	var_Pattern.Type = exontrol.EXORGCHARTLib.PatternEnum.exPatternFrame | exontrol.EXORGCHARTLib.PatternEnum.exPatternFDiagonal;
	var_Pattern.Color = Color.FromArgb(190,190,190);
	var_Pattern.FrameColor = Color.FromArgb(128,128,128);
exchartview1.EndUpdate();

JScript/JavaScript

<BODY onload="Init()">
<OBJECT CLASSID="clsid:F4DFE455-01FE-420E-A088-64346DCC3791" id="ChartView1"></OBJECT>

<SCRIPT LANGUAGE="JScript">
function Init()
{
	ChartView1.BeginUpdate();
	var var_Node = ChartView1.Root;
		var_Node.AddAssistant("Assistant 1",null,null);
		var_Node.AddAssistant("Assistant 2",null,null);
	var var_Nodes = ChartView1.Nodes;
		var_Nodes.Add("Child <b>1</b>",null,"1234",null,null);
		var_Nodes.Add("Sub 1","1234","AK1",null,null);
		var_Nodes.Add("Sub 2","1234","AK2",null,null);
		var_Nodes.Add("Sub 3","1234",null,null,null);
		var_Nodes.Add("Child <b>2.1</b>",null,null,null,null).AddGroup("Child <b>2.2</b>",null,null);
	var var_Pattern = ChartView1.Frames.Add("AK1,AK2").Pattern;
		var_Pattern.Type = 261;
		var_Pattern.Color = 12500670;
		var_Pattern.FrameColor = 8421504;
	ChartView1.EndUpdate();
}
</SCRIPT>
</BODY>

VBScript

<BODY onload="Init()">
<OBJECT CLASSID="clsid:F4DFE455-01FE-420E-A088-64346DCC3791" id="ChartView1"></OBJECT>

<SCRIPT LANGUAGE="VBScript">
Function Init()
	With ChartView1
		.BeginUpdate 
		With .Root
			.AddAssistant "Assistant 1"
			.AddAssistant "Assistant 2"
		End With
		With .Nodes
			.Add "Child <b>1</b>",,"1234"
			.Add "Sub 1","1234","AK1"
			.Add "Sub 2","1234","AK2"
			.Add "Sub 3","1234"
			.Add("Child <b>2.1</b>").AddGroup "Child <b>2.2</b>"
		End With
		With .Frames.Add("AK1,AK2").Pattern
			.Type = 261 ' PatternEnum.exPatternFrame Or PatternEnum.exPatternFDiagonal
			.Color = RGB(190,190,190)
			.FrameColor = RGB(128,128,128)
		End With
		.EndUpdate 
	End With
End Function
</SCRIPT>
</BODY>

C# for /COM

axChartView1.BeginUpdate();
EXORGCHARTLib.Node var_Node = axChartView1.Root;
	var_Node.AddAssistant("Assistant 1",null,null);
	var_Node.AddAssistant("Assistant 2",null,null);
EXORGCHARTLib.Nodes var_Nodes = axChartView1.Nodes;
	var_Nodes.Add("Child <b>1</b>",null,"1234",null,null);
	var_Nodes.Add("Sub 1","1234","AK1",null,null);
	var_Nodes.Add("Sub 2","1234","AK2",null,null);
	var_Nodes.Add("Sub 3","1234",null,null,null);
	var_Nodes.Add("Child <b>2.1</b>",null,null,null,null).AddGroup("Child <b>2.2</b>",null,null);
EXORGCHARTLib.Pattern var_Pattern = axChartView1.Frames.Add("AK1,AK2").Pattern;
	var_Pattern.Type = EXORGCHARTLib.PatternEnum.exPatternFrame | EXORGCHARTLib.PatternEnum.exPatternFDiagonal;
	var_Pattern.Color = (uint)ColorTranslator.ToWin32(Color.FromArgb(190,190,190));
	var_Pattern.FrameColor = (uint)ColorTranslator.ToWin32(Color.FromArgb(128,128,128));
axChartView1.EndUpdate();

X++ (Dynamics Ax 2009)

public void init()
{
	COM com_Frame,com_Node,com_Node1,com_Nodes,com_Pattern;
	anytype var_Frame,var_Node,var_Node1,var_Nodes,var_Pattern;
	;

	super();

	exchartview1.BeginUpdate();
	var_Node = exchartview1.Root(); com_Node = var_Node;
		com_Node.AddAssistant("Assistant 1");
		com_Node.AddAssistant("Assistant 2");
	var_Nodes = exchartview1.Nodes(); com_Nodes = var_Nodes;
		com_Nodes.Add("Child <b>1</b>",,"1234");
		com_Nodes.Add("Sub 1","1234","AK1");
		com_Nodes.Add("Sub 2","1234","AK2");
		com_Nodes.Add("Sub 3","1234");
		var_Node1 = COM::createFromObject(com_Nodes.Add("Child <b>2.1</b>")); com_Node1 = var_Node1;
		com_Node1.AddGroup("Child <b>2.2</b>");
	var_Frame = COM::createFromObject(exchartview1.Frames()).Add("AK1,AK2"); com_Frame = var_Frame;
	var_Pattern = com_Frame.Pattern(); com_Pattern = var_Pattern;
		com_Pattern.Type(261/*exPatternFrame | exPatternFDiagonal*/);
		com_Pattern.Color(WinApi::RGB2int(190,190,190));
		com_Pattern.FrameColor(WinApi::RGB2int(128,128,128));
	exchartview1.EndUpdate();
}

Delphi 8 (.NET only)

with AxChartView1 do
begin
	BeginUpdate();
	with Root do
	begin
		AddAssistant('Assistant 1',Nil,Nil);
		AddAssistant('Assistant 2',Nil,Nil);
	end;
	with Nodes do
	begin
		Add('Child <b>1</b>',Nil,'1234',Nil,Nil);
		Add('Sub 1','1234','AK1',Nil,Nil);
		Add('Sub 2','1234','AK2',Nil,Nil);
		Add('Sub 3','1234',Nil,Nil,Nil);
		Add('Child <b>2.1</b>',Nil,Nil,Nil,Nil).AddGroup('Child <b>2.2</b>',Nil,Nil);
	end;
	with Frames.Add('AK1,AK2').Pattern do
	begin
		Type := Integer(EXORGCHARTLib.PatternEnum.exPatternFrame) Or Integer(EXORGCHARTLib.PatternEnum.exPatternFDiagonal);
		Color := $bebebe;
		FrameColor := $808080;
	end;
	EndUpdate();
end

Delphi (standard)

with ChartView1 do
begin
	BeginUpdate();
	with Root do
	begin
		AddAssistant('Assistant 1',Null,Null);
		AddAssistant('Assistant 2',Null,Null);
	end;
	with Nodes do
	begin
		Add('Child <b>1</b>',Null,'1234',Null,Null);
		Add('Sub 1','1234','AK1',Null,Null);
		Add('Sub 2','1234','AK2',Null,Null);
		Add('Sub 3','1234',Null,Null,Null);
		Add('Child <b>2.1</b>',Null,Null,Null,Null).AddGroup('Child <b>2.2</b>',Null,Null);
	end;
	with Frames.Add('AK1,AK2').Pattern do
	begin
		Type := Integer(EXORGCHARTLib_TLB.exPatternFrame) Or Integer(EXORGCHARTLib_TLB.exPatternFDiagonal);
		Color := $bebebe;
		FrameColor := $808080;
	end;
	EndUpdate();
end

VFP

with thisform.ChartView1
	.BeginUpdate
	with .Root
		.AddAssistant("Assistant 1")
		.AddAssistant("Assistant 2")
	endwith
	with .Nodes
		.Add("Child <b>1</b>",Null,"1234")
		.Add("Sub 1","1234","AK1")
		.Add("Sub 2","1234","AK2")
		.Add("Sub 3","1234")
		.Add("Child <b>2.1</b>").AddGroup("Child <b>2.2</b>")
	endwith
	with .Frames.Add("AK1,AK2").Pattern
		.Type = 261 && PatternEnum.exPatternFrame Or PatternEnum.exPatternFDiagonal
		.Color = RGB(190,190,190)
		.FrameColor = RGB(128,128,128)
	endwith
	.EndUpdate
endwith

dBASE Plus

local oChartView,var_Node,var_Nodes,var_Pattern

oChartView = form.EXORGCHARTACTIVEXCONTROL1.nativeObject
oChartView.BeginUpdate()
var_Node = oChartView.Root
	var_Node.AddAssistant("Assistant 1")
	var_Node.AddAssistant("Assistant 2")
var_Nodes = oChartView.Nodes
	var_Nodes.Add("Child <b>1</b>",null,"1234")
	var_Nodes.Add("Sub 1","1234","AK1")
	var_Nodes.Add("Sub 2","1234","AK2")
	var_Nodes.Add("Sub 3","1234")
	var_Nodes.Add("Child <b>2.1</b>").AddGroup("Child <b>2.2</b>")
var_Pattern = oChartView.Frames.Add("AK1,AK2").Pattern
	var_Pattern.Type = 261 /*exPatternFrame | exPatternFDiagonal*/
	var_Pattern.Color = 0xbebebe
	var_Pattern.FrameColor = 0x808080
oChartView.EndUpdate()

XBasic (Alpha Five)

Dim oChartView as P
Dim var_Node as P
Dim var_Nodes as P
Dim var_Pattern as P

oChartView = topparent:CONTROL_ACTIVEX1.activex
oChartView.BeginUpdate()
var_Node = oChartView.Root
	var_Node.AddAssistant("Assistant 1")
	var_Node.AddAssistant("Assistant 2")
var_Nodes = oChartView.Nodes
	var_Nodes.Add("Child <b>1</b>",,"1234")
	var_Nodes.Add("Sub 1","1234","AK1")
	var_Nodes.Add("Sub 2","1234","AK2")
	var_Nodes.Add("Sub 3","1234")
	var_Nodes.Add("Child <b>2.1</b>").AddGroup("Child <b>2.2</b>")
var_Pattern = oChartView.Frames.Add("AK1,AK2").Pattern
	var_Pattern.Type = 261 'exPatternFrame + exPatternFDiagonal
	var_Pattern.Color = 12500670
	var_Pattern.FrameColor = 8421504
oChartView.EndUpdate()

Visual Objects

local var_Node as INode
local var_Nodes as INodes
local var_Pattern as IPattern

oDCOCX_Exontrol1:BeginUpdate()
var_Node := oDCOCX_Exontrol1:Root
	var_Node:AddAssistant("Assistant 1",nil,nil)
	var_Node:AddAssistant("Assistant 2",nil,nil)
var_Nodes := oDCOCX_Exontrol1:Nodes
	var_Nodes:Add("Child <b>1</b>",nil,"1234",nil,nil)
	var_Nodes:Add("Sub 1","1234","AK1",nil,nil)
	var_Nodes:Add("Sub 2","1234","AK2",nil,nil)
	var_Nodes:Add("Sub 3","1234",nil,nil,nil)
	var_Nodes:Add("Child <b>2.1</b>",nil,nil,nil,nil):AddGroup("Child <b>2.2</b>",nil,nil)
var_Pattern := oDCOCX_Exontrol1:Frames:Add("AK1,AK2"):Pattern
	var_Pattern:Type := exPatternFrame | exPatternFDiagonal
	var_Pattern:Color := RGB(190,190,190)
	var_Pattern:FrameColor := RGB(128,128,128)
oDCOCX_Exontrol1:EndUpdate()

PowerBuilder

OleObject oChartView,var_Node,var_Nodes,var_Pattern

oChartView = ole_1.Object
oChartView.BeginUpdate()
var_Node = oChartView.Root
	var_Node.AddAssistant("Assistant 1")
	var_Node.AddAssistant("Assistant 2")
var_Nodes = oChartView.Nodes
	var_Nodes.Add("Child <b>1</b>",,"1234")
	var_Nodes.Add("Sub 1","1234","AK1")
	var_Nodes.Add("Sub 2","1234","AK2")
	var_Nodes.Add("Sub 3","1234")
	var_Nodes.Add("Child <b>2.1</b>").AddGroup("Child <b>2.2</b>")
var_Pattern = oChartView.Frames.Add("AK1,AK2").Pattern
	var_Pattern.Type = 261 /*exPatternFrame | exPatternFDiagonal*/
	var_Pattern.Color = RGB(190,190,190)
	var_Pattern.FrameColor = RGB(128,128,128)
oChartView.EndUpdate()

Visual DataFlex

Procedure OnCreate
	Forward Send OnCreate
	Send ComBeginUpdate
	Variant voNode
	Get ComRoot to voNode
	Handle hoNode
	Get Create (RefClass(cComNode)) to hoNode
	Set pvComObject of hoNode to voNode
		Get ComAddAssistant of hoNode "Assistant 1" Nothing Nothing to Nothing
		Get ComAddAssistant of hoNode "Assistant 2" Nothing Nothing to Nothing
	Send Destroy to hoNode
	Variant voNodes
	Get ComNodes to voNodes
	Handle hoNodes
	Get Create (RefClass(cComNodes)) to hoNodes
	Set pvComObject of hoNodes to voNodes
		Get ComAdd of hoNodes "Child <b>1</b>" "1234" Nothing Nothing to Nothing
		Get ComAdd of hoNodes "Sub 1" "1234" "AK1" Nothing Nothing to Nothing
		Get ComAdd of hoNodes "Sub 2" "1234" "AK2" Nothing Nothing to Nothing
		Get ComAdd of hoNodes "Sub 3" "1234" Nothing Nothing Nothing to Nothing
		Variant voNode1
		Get ComAdd of hoNodes "Child <b>2.1</b>" Nothing Nothing Nothing Nothing to voNode1
		Handle hoNode1
		Get Create (RefClass(cComNode)) to hoNode1
		Set pvComObject of hoNode1 to voNode1
			Get ComAddGroup of hoNode1 "Child <b>2.2</b>" Nothing Nothing to Nothing
		Send Destroy to hoNode1
	Send Destroy to hoNodes
	Variant voFrames
	Get ComFrames to voFrames
	Handle hoFrames
	Get Create (RefClass(cComFrames)) to hoFrames
	Set pvComObject of hoFrames to voFrames
		Variant voFrame
		Get ComAdd of hoFrames "AK1,AK2" to voFrame
		Handle hoFrame
		Get Create (RefClass(cComFrame)) to hoFrame
		Set pvComObject of hoFrame to voFrame
			Variant voPattern
			Get ComPattern of hoFrame to voPattern
			Handle hoPattern
			Get Create (RefClass(cComPattern)) to hoPattern
			Set pvComObject of hoPattern to voPattern
				Set ComType of hoPattern to (OLEexPatternFrame + OLEexPatternFDiagonal)
				Set ComColor of hoPattern to (RGB(190,190,190))
				Set ComFrameColor of hoPattern to (RGB(128,128,128))
			Send Destroy to hoPattern
		Send Destroy to hoFrame
	Send Destroy to hoFrames
	Send ComEndUpdate
End_Procedure

XBase++

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oChartView
	LOCAL oNode
	LOCAL oNodes
	LOCAL oPattern

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oChartView := XbpActiveXControl():new( oForm:drawingArea )
	oChartView:CLSID  := "Exontrol.ChartView.1" /*{F4DFE455-01FE-420E-A088-64346DCC3791}*/
	oChartView:create(,, {10,60},{610,370} )

		oChartView:BeginUpdate()
		oNode := oChartView:Root()
			oNode:AddAssistant("Assistant 1")
			oNode:AddAssistant("Assistant 2")
		oNodes := oChartView:Nodes()
			oNodes:Add("Child <b>1</b>",,"1234")
			oNodes:Add("Sub 1","1234","AK1")
			oNodes:Add("Sub 2","1234","AK2")
			oNodes:Add("Sub 3","1234")
			oNodes:Add("Child <b>2.1</b>"):AddGroup("Child <b>2.2</b>")
		oPattern := oChartView:Frames():Add("AK1,AK2"):Pattern()
			oPattern:Type := 261/*exPatternFrame+exPatternFDiagonal*/
			oPattern:SetProperty("Color",AutomationTranslateColor( GraMakeRGBColor  ( { 190,190,190 } )  , .F. ))
			oPattern:SetProperty("FrameColor",AutomationTranslateColor( GraMakeRGBColor  ( { 128,128,128 } )  , .F. ))
		oChartView:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN