1261
Mask for Floating-Point Numbers (Emglish Style: . as Decimal, , as Grouping Separator)
public void init()
{
	COM com_Column,com_Editor,com_Items;
	anytype var_Column,var_Editor,var_Items;
	;

	super();

	exgrid1.BeginUpdate();
	exgrid1.HeaderAppearance(4/*Etched*/);
	exgrid1.HeaderHeight(24);
	exgrid1.DrawGridLines(-2/*exRowLines*/);
	exgrid1.GridLineStyle(48/*exGridLinesSolid*/);
	exgrid1.SelForeColor(exgrid1.ForeColor());
	exgrid1.SelBackColor(exgrid1.BackColor());
	exgrid1.ShowFocusRect(false);
	var_Column = COM::createFromVariant(exgrid1.Columns().Add("Float(English-style)")); com_Column = var_Column;
		com_Column.SortType(1/*SortNumeric*/);
		com_Column.FormatColumn("value format `3`");
		com_Column.HeaderAlignment(2/*RightAlignment*/);
		com_Column.Alignment(2/*RightAlignment*/);
		var_Editor = com_Column.Editor(); com_Editor = var_Editor;
			com_Editor.EditType(8/*MaskType*/);
			com_Editor.Mask("!999,999,990.000;;;float,right,negative,grouping=\\,,decimal=.");
	var_Items = exgrid1.Items(); com_Items = var_Items;
		com_Items.AddItem(COMVariant::createFromReal(192278.12));
		com_Items.AddItem(COMVariant::createFromReal(2829.7));
		com_Items.AddItem(COMVariant::createFromReal(7391.55));
		com_Items.AddItem(COMVariant::createFromReal(50812.23));
		com_Items.AddItem(COMVariant::createFromReal(913.04));
		com_Items.AddItem(COMVariant::createFromReal(127500.88));
		com_Items.AddItem(COMVariant::createFromReal(62.19));
		com_Items.AddItem(COMVariant::createFromInt(1));
	exgrid1.EndUpdate();
}
1260
Mask for Floating-Point Numbers (German Style: , as Decimal, . as Grouping Separator)
public void init()
{
	COM com_Column,com_Editor,com_Items;
	anytype var_Column,var_Editor,var_Items;
	;

	super();

	exgrid1.BeginUpdate();
	exgrid1.HeaderAppearance(4/*Etched*/);
	exgrid1.HeaderHeight(24);
	exgrid1.DrawGridLines(-2/*exRowLines*/);
	exgrid1.GridLineStyle(48/*exGridLinesSolid*/);
	exgrid1.SelForeColor(exgrid1.ForeColor());
	exgrid1.SelBackColor(exgrid1.BackColor());
	exgrid1.ShowFocusRect(false);
	var_Column = COM::createFromVariant(exgrid1.Columns().Add("Float(German-style)")); com_Column = var_Column;
		com_Column.SortType(1/*SortNumeric*/);
		com_Column.FormatColumn("value format `3`");
		com_Column.HeaderAlignment(2/*RightAlignment*/);
		com_Column.Alignment(2/*RightAlignment*/);
		var_Editor = com_Column.Editor(); com_Editor = var_Editor;
			com_Editor.EditType(8/*MaskType*/);
			com_Editor.Mask("!999.999.990,000;;;float,right,grouping=.,decimal=\\,");
	var_Items = exgrid1.Items(); com_Items = var_Items;
		com_Items.AddItem(COMVariant::createFromReal(192278.12));
		com_Items.AddItem(COMVariant::createFromReal(2829.7));
		com_Items.AddItem(COMVariant::createFromReal(7391.55));
		com_Items.AddItem(COMVariant::createFromReal(50812.23));
		com_Items.AddItem(COMVariant::createFromReal(913.04));
		com_Items.AddItem(COMVariant::createFromReal(127500.88));
		com_Items.AddItem(COMVariant::createFromReal(62.19));
		com_Items.AddItem(COMVariant::createFromInt(1));
	exgrid1.EndUpdate();
}
1259
Locks the first visible column on the left and the last visible column on the right

public void init()
{
	COM com_rs;
	anytype rs;
	;

	super();

	exgrid1.BeginUpdate();
	exgrid1.ColumnAutoResize(false);
	exgrid1.BackColorLock(WinApi::RGB2int(192,192,192));
	exgrid1.GridLineStyle(48/*exGridLinesSolid*/);
	exgrid1.DrawGridLines(2/*exVLines*/);
	exgrid1.HeaderAppearance(4/*Etched*/);
	// Add 'Microsoft ActiveX Data Objects 6.1 Library(msado15.dll)' reference to your project.
	rs = COM::createFromObject(new ADODB.Recordset()); com_rs = rs;
		rs.Open("Orders","Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\\Program Files\\Exontrol\\ExGrid\\Sample\\Access\\misc.mdb",3/*adOpenStatic*/,3/*adLockOptimistic*/);
	exgrid1.DataSource(rs);
	exgrid1.CountLockedColumns(17);
	exgrid1.EndUpdate();
}
1258
Lock the column on the right

public void init()
{
	COM com_rs;
	anytype rs;
	;

	super();

	exgrid1.BeginUpdate();
	exgrid1.ColumnAutoResize(false);
	exgrid1.BackColorLock(WinApi::RGB2int(192,192,192));
	exgrid1.GridLineStyle(48/*exGridLinesSolid*/);
	exgrid1.DrawGridLines(2/*exVLines*/);
	exgrid1.HeaderAppearance(4/*Etched*/);
	// Add 'Microsoft ActiveX Data Objects 6.1 Library(msado15.dll)' reference to your project.
	rs = COM::createFromObject(new ADODB.Recordset()); com_rs = rs;
		rs.Open("Orders","Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\\Program Files\\Exontrol\\ExGrid\\Sample\\Access\\misc.mdb",3/*adOpenStatic*/,3/*adLockOptimistic*/);
	exgrid1.DataSource(rs);
	exgrid1.CountLockedColumns(16);
	exgrid1.EndUpdate();
}
1257
Lock the column on the left

public void init()
{
	COM com_rs;
	anytype rs;
	;

	super();

	exgrid1.BeginUpdate();
	exgrid1.ColumnAutoResize(false);
	exgrid1.BackColorLock(WinApi::RGB2int(192,192,192));
	exgrid1.GridLineStyle(48/*exGridLinesSolid*/);
	exgrid1.DrawGridLines(2/*exVLines*/);
	exgrid1.HeaderAppearance(4/*Etched*/);
	// Add 'Microsoft ActiveX Data Objects 6.1 Library(msado15.dll)' reference to your project.
	rs = COM::createFromObject(new ADODB.Recordset()); com_rs = rs;
		rs.Open("Orders","Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\\Program Files\\Exontrol\\ExGrid\\Sample\\Access\\misc.mdb",3/*adOpenStatic*/,3/*adLockOptimistic*/);
	exgrid1.DataSource(rs);
	exgrid1.CountLockedColumns(1);
	exgrid1.EndUpdate();
}
1256
Update the item's lock state - pinning it to the top, bottom, or making it scrollable

public void init()
{
	COM com_Items;
	anytype var_Items;
	;

	super();

	exgrid1.BeginUpdate();
	exgrid1.Columns().Add("Column");
	var_Items = exgrid1.Items(); com_Items = var_Items;
		com_Items.AddItem("un-locked item");
		com_Items.LockItem(com_Items.AddItem("top-locked item"),-1/*exLockTop*/);
		com_Items.LockItem(com_Items.AddItem("bottom-locked item"),1/*exLockBottom*/);
	exgrid1.EndUpdate();
}
1255
The Change event is called before changing the value. Is there any event such as Changed that is called after updating the cell's value
// Changed event - Occurs after the user has changed the content of a cell.
void onEvent_Changed(int   _Item, int   _ColIndex)
{
	;
	print( exgrid1.Items().CellValue(_Item,_ColIndex) );
}

public void init()
{
	COM com_Editor;
	anytype var_Editor;
	;

	super();

	exgrid1.BeginUpdate();
	var_Editor = COM::createFromObject(COM::createFromVariant(exgrid1.Columns().Add("Edit"))).Editor(); com_Editor = var_Editor;
	com_Editor.EditType(1/*EditType*/);
	exgrid1.Items().AddItem("Item 1");
	exgrid1.Items().AddItem("Item 2");
	exgrid1.EndUpdate();
}
1254
How can I reposition the +/- (expand/collapse) icon to show as "number, icon, text" (sample 2)
// AnchorClick event - Occurs when an anchor element is clicked.
void onEvent_AnchorClick(str   _AnchorID, str   _Options)
{
	COM com_Items;
	COMVariant i;
	anytype var_Items;
	boolean exp;
	;
	i = exgrid1.FormatABC("int(value)",_AnchorID);
	var_Items = exgrid1.Items(); com_Items = var_Items;
		i = com_Items.ItemByIndex(i);
		exp = com_Items.ExpandItem(i);
		com_Items.ExpandItem(i,exgrid1.FormatABC("not value",exp));
}

public void init()
{
	COM com_Column,com_Columns,com_Editor,com_Items;
	COMVariant i;
	anytype var_Column,var_Columns,var_Editor,var_Items;
	boolean exp;
	int h,hRoot;
	str var_s,var_s1,var_s2,var_s3;
	;

	super();

	exgrid1.BeginUpdate();
	var_s = "gCJKBOI4NBQaBQAhQNJJIIhShQACERCAIA0RD7zf5hiIBOZSI5CACuZwcdMRAhnIJNIMKWKPBb8MIFiIJOBILJzhQOYc7YYBY5vVBkiIYOhFLB0KZvMx0O5hORlABQMJ";
	var_s = var_s + "pNx0FxOIpUEA1FwxFw3RbWe45iK2MpYJJmJJJFQABERmgaAM0AMRJURDd1AF3hUQhQoAIDvsRAURGIBw8ThRaiJpQ4EwsKNURyxgjsRzEKv1TqtXrNbrtfsIAwgASAHA";
	var_s = var_s + "GShQwGQzGABUGEzudAqgyWdSmWw2Fw+sABSHI4AGH1XAGAxGAwywlI6eRqjGi1YuaJJEIJUHBPYqSJYKQAwCBDKbBPbncBibrUKQjGLFQo+TBFfR5GaUAR/KbGICyRxs";
	var_s = var_s + "iCOQClgdJxGoMpkGycpdDqUZ0EoJQJHYVoWCSCA4kEbRlHKRwJiYcYCH0PBNB2JwYCaCRsGcE8LDyfZKg+U59EsAZMlQCgJkcEA9CsywkiKJwiFcIQwEEgI=";
	exgrid1.HTMLPicture("expand",COMVariant::createFromStr(var_s));
	var_s1 = "gCJKBOI4NBQaBQAhQNJJIIhShQACERCAIA0RD7zf5hiIBOZSI5CACuZwcdMRAhnIJNIMKWKPBb8MIFiIJOBILJzhQOYU7YQBCooJSAiIYOhFLB0KZvMx0O5hORlABQMJ";
	var_s1 = var_s1 + "pNx0FxOIpUEA1FwxFw3RbWe45iK2MpYJJmJJJFQABERmgaAM0AMRJURDd1AF3hUQhQoAIDvsRAURGIBw8ThRaiJpQ4EwsKNURyzyO13dGEAGYzWcqlWrFarlesA3AGcS";
	var_s1 = var_s1 + "AHAGShQwGQzGABUGEv2TAAFUGS26Uy2GwuH1wAKQ5HAAw+s4YwGIwGGWISpVLiXT5MrxiJyJJEIJUHBPYqSXYOQAgBgAB6jJwufxxX7YYhdYhFCSsSwSC4uMLoQajNJA";
	var_s1 = var_s1 + "G8QgZAgSIqGMCwRBkAJDicGwuiMeoHGeaRFlAU5qDwQQ6A+CYnlgPQeisGJfl4AJYhsRISjQYwJHIcpmmALAtlMEpkE4YBREmEpPBAARdicSw8AES5fi+fI5g+PpcAAU";
	var_s1 = var_s1 + "JKgyCYknaZRrssJIiicIhXCEMBBICA==";
	exgrid1.HTMLPicture("collapse",COMVariant::createFromStr(var_s1));
	var_s2 = "gCJKBOI4NBQaBQAhQNJJIIhShQACERCAIA0RD7zf5hiIBOZSI5CACuZwcdMRAhnIJNIMKWKPBb8MIFiIJOBILJzhQOYE7YABNTWRIJiIYOhFLB0KZvMx0O5hORlABQMJ";
	var_s2 = var_s2 + "pNx0FxOIpUEA1FwxFw3RbWe45iK2MpYJJmJJJFQABERmgaAM0AMRJURDd1AF3hUQhQoAIDvsRAURGIBw8ThRaiJpQ4EwsKNURyy/O13dGEAGYzWcqlWrFarlesA3AGcS";
	var_s2 = var_s2 + "AHAGShQwGQzGABUGEv2TAAFUGS26Uy2GwuH1wAKQ5HAAw+s4YwGIwGGWYSvDpndpkQ9xhRTJJEIJUHBPdqSGIKYAwBgDUpCfytH57FqoVaTKQTGS0DJ6cDBDzOGwIfAN";
	var_s2 = var_s2 + "HMIxJDmf5CFIAxwA4Q5HEQVJlEWRxnBkMANjsPoqBSEAElkfZ5CMFJMHCC52BALBGjkDpHCuXIAB2bQdEGaQgFIbbLCSIonCIVwhDAQSAg==";
	exgrid1.HTMLPicture("empty",COMVariant::createFromStr(var_s2));
	exgrid1.HeaderVisible(false);
	exgrid1.HasLines(0/*exNoLine*/);
	exgrid1.HasButtons(0/*exNoButtons*/);
	exgrid1.Indent(12);
	exgrid1.DefaultItemHeight(24);
	exgrid1.DrawGridLines(1/*exHLines*/);
	exgrid1.GridLineStyle(48/*exGridLinesSolid*/);
	exgrid1.GridLineColor(WinApi::RGB2int(204,204,204));
	exgrid1.ShowFocusRect(false);
	exgrid1.ExpandOnDblClick(false);
	exgrid1.ExpandOnKeys(false);
	var_Columns = exgrid1.Columns(); com_Columns = var_Columns;
		var_Column = COM::createFromVariant(com_Columns.Add("Item")); com_Column = var_Column;
			com_Column.Def(17/*exCellValueFormat*/,COMVariant::createFromInt(1));
			var_s3 = "(len(parent(1 index ``)) ? (`<b><fgcolor gray>` + (1 pos ``) + `. ` + `</fgcolor></b>` + (%CC0 ? (`<a ` + (0 index ``) + `>`) : ";
			var_s3 = var_s3 + "``) + `<img>` + (%CC0 ? (not %CX0 ? `expand` : `collapse`) : `empty`) + `:16</img>` + (%CC0 ? (`</a>`) : ``)) : ``) + ` ` + valu";
			var_s3 = var_s3 + "e";
			com_Column.FormatColumn(var_s3);
			var_Editor = com_Column.Editor(); com_Editor = var_Editor;
				com_Editor.EditType(1/*EditType*/);
				com_Editor.Option(116/*exEditorAdjustPos*/,"32 4 -4 -4");
	var_Items = exgrid1.Items(); com_Items = var_Items;
		hRoot = com_Items.AddItem("ACME Corporation");
		com_Items.SelectableItem(hRoot,false);
		com_Items.ExpandItem(hRoot,true);
		h = com_Items.InsertItem(hRoot,,"Management");
		com_Items.InsertItem(h,,"CEO - Alice Brown");
		com_Items.InsertItem(h,,"COO - James Lee");
		h = com_Items.InsertItem(hRoot,,"HR Department");
		com_Items.InsertItem(h,,"Recruiter - Jane Smith");
		com_Items.InsertItem(h,,"HR Assistant - Bob Green");
		com_Items.ExpandItem(h,true);
		h = com_Items.InsertItem(h,,"Engineering");
		com_Items.InsertItem(h,,"Software Team");
		h = com_Items.InsertItem(h,,"Lead Developer - Mark H.");
		com_Items.InsertItem(h,,"Frontend Dev - Emily R.");
		com_Items.InsertItem(h,,"Backend Dev - Tom W.");
		com_Items.InsertItem(hRoot,,"QA Team");
	exgrid1.EndUpdate();
}
1253
How can I reposition the +/- (expand/collapse) icon to show as "number, icon, text" (sample 1)

// AnchorClick event - Occurs when an anchor element is clicked.
void onEvent_AnchorClick(str   _AnchorID, str   _Options)
{
	COM com_Items;
	COMVariant i;
	anytype var_Items;
	boolean exp;
	;
	i = exgrid1.FormatABC("int(value)",_AnchorID);
	var_Items = exgrid1.Items(); com_Items = var_Items;
		i = com_Items.ItemByIndex(i);
		exp = com_Items.ExpandItem(i);
		com_Items.ExpandItem(i,exgrid1.FormatABC("not value",exp));
}

public void init()
{
	COM com_Column,com_Columns,com_Items;
	COMVariant i;
	anytype var_Column,var_Columns,var_Items;
	boolean exp;
	int h,hRoot;
	str var_s,var_s1,var_s2;
	;

	super();

	exgrid1.BeginUpdate();
	var_s = "gCJKBOI4NBQaBQAhQNJJIIhShQACERCAIA0RD7zf5hiIBOZSI5CACuZwcdMRAhnIJNIMKWKPBb8MIFiIJOBILJzhQOYc7YYBY5vVBkiIYOhFLB0KZvMx0O5hORlABQMJ";
	var_s = var_s + "pNx0FxOIpUEA1FwxFw3RbWe45iK2MpYJJmJJJFQABERmgaAM0AMRJURDd1AF3hUQhQoAIDvsRAURGIBw8ThRaiJpQ4EwsKNURyxgjsRzEKv1TqtXrNbrtfsIAwgASAHA";
	var_s = var_s + "GShQwGQzGABUGEzudAqgyWdSmWw2Fw+sABSHI4AGH1XAGAxGAwywlI6eRqjGi1YuaJJEIJUHBPYqSJYKQAwCBDKbBPbncBibrUKQjGLFQo+TBFfR5GaUAR/KbGICyRxs";
	var_s = var_s + "iCOQClgdJxGoMpkGycpdDqUZ0EoJQJHYVoWCSCA4kEbRlHKRwJiYcYCH0PBNB2JwYCaCRsGcE8LDyfZKg+U59EsAZMlQCgJkcEA9CsywkiKJwiFcIQwEEgI=";
	exgrid1.HTMLPicture("expand",COMVariant::createFromStr(var_s));
	var_s1 = "gCJKBOI4NBQaBQAhQNJJIIhShQACERCAIA0RD7zf5hiIBOZSI5CACuZwcdMRAhnIJNIMKWKPBb8MIFiIJOBILJzhQOYU7YQBCooJSAiIYOhFLB0KZvMx0O5hORlABQMJ";
	var_s1 = var_s1 + "pNx0FxOIpUEA1FwxFw3RbWe45iK2MpYJJmJJJFQABERmgaAM0AMRJURDd1AF3hUQhQoAIDvsRAURGIBw8ThRaiJpQ4EwsKNURyzyO13dGEAGYzWcqlWrFarlesA3AGcS";
	var_s1 = var_s1 + "AHAGShQwGQzGABUGEv2TAAFUGS26Uy2GwuH1wAKQ5HAAw+s4YwGIwGGWISpVLiXT5MrxiJyJJEIJUHBPYqSXYOQAgBgAB6jJwufxxX7YYhdYhFCSsSwSC4uMLoQajNJA";
	var_s1 = var_s1 + "G8QgZAgSIqGMCwRBkAJDicGwuiMeoHGeaRFlAU5qDwQQ6A+CYnlgPQeisGJfl4AJYhsRISjQYwJHIcpmmALAtlMEpkE4YBREmEpPBAARdicSw8AES5fi+fI5g+PpcAAU";
	var_s1 = var_s1 + "JKgyCYknaZRrssJIiicIhXCEMBBICA==";
	exgrid1.HTMLPicture("collapse",COMVariant::createFromStr(var_s1));
	exgrid1.HeaderVisible(false);
	exgrid1.HasLines(0/*exNoLine*/);
	exgrid1.HasButtons(0/*exNoButtons*/);
	exgrid1.Indent(12);
	exgrid1.DefaultItemHeight(24);
	exgrid1.DrawGridLines(1/*exHLines*/);
	exgrid1.GridLineStyle(48/*exGridLinesSolid*/);
	exgrid1.GridLineColor(WinApi::RGB2int(204,204,204));
	exgrid1.ShowFocusRect(false);
	exgrid1.ExpandOnDblClick(false);
	exgrid1.ExpandOnKeys(false);
	var_Columns = exgrid1.Columns(); com_Columns = var_Columns;
		var_Column = COM::createFromVariant(com_Columns.Add("Item")); com_Column = var_Column;
			com_Column.Def(17/*exCellValueFormat*/,COMVariant::createFromInt(1));
			var_s2 = "(len(parent(1 index ``)) ? (`<b><fgcolor gray>` + (1 pos ``) + `. ` + `</fgcolor></b>` + `<a ` + (0 index ``) + `><img>` + (%CC0";
			var_s2 = var_s2 + " ? (not %CX0 ? `expand` : `collapse`) : ``) + `:16</img></a>`) : ``) + ` ` + value";
			com_Column.FormatColumn(var_s2);
	var_Items = exgrid1.Items(); com_Items = var_Items;
		hRoot = com_Items.AddItem("ACME Corporation");
		com_Items.SelectableItem(hRoot,false);
		com_Items.ExpandItem(hRoot,true);
		h = com_Items.InsertItem(hRoot,,"Management");
		com_Items.InsertItem(h,,"CEO - Alice Brown");
		com_Items.InsertItem(h,,"COO - James Lee");
		h = com_Items.InsertItem(hRoot,,"HR Department");
		com_Items.InsertItem(h,,"Recruiter - Jane Smith");
		com_Items.InsertItem(h,,"HR Assistant - Bob Green");
		com_Items.ExpandItem(h,true);
		h = com_Items.InsertItem(h,,"Engineering");
		com_Items.InsertItem(h,,"Software Team");
		h = com_Items.InsertItem(h,,"Lead Developer - Mark H.");
		com_Items.InsertItem(h,,"Frontend Dev - Emily R.");
		com_Items.InsertItem(h,,"Backend Dev - Tom W.");
		com_Items.InsertItem(hRoot,,"QA Team");
	exgrid1.EndUpdate();
}
1252
Expandable bullet list

// AnchorClick event - Occurs when an anchor element is clicked.
void onEvent_AnchorClick(str   _AnchorID, str   _Options)
{
	COM com_Items;
	COMVariant i;
	anytype var_Items;
	boolean exp;
	;
	i = exgrid1.FormatABC("int(value)",_AnchorID);
	var_Items = exgrid1.Items(); com_Items = var_Items;
		i = com_Items.ItemByIndex(i);
		exp = com_Items.ExpandItem(i);
		com_Items.ExpandItem(i,exgrid1.FormatABC("not value",exp));
}

public void init()
{
	COM com_Column,com_Columns,com_Editor,com_Items;
	COMVariant i;
	anytype var_Column,var_Columns,var_Editor,var_Items;
	boolean exp;
	int h,hRoot;
	str var_s,var_s1,var_s2;
	;

	super();

	exgrid1.BeginUpdate();
	var_s = "gCJKBOI4NBQaBQAhQNJJIIhShQACERCAIA0RD7zf5hiIBOZSI5CACuZwcdMRAhnIJNIMKWKPBb8MIFiIJOBILJzhQOYM7YIBXCRNbtiIYOhFLB0KZvMx0O5hORlABQMJ";
	var_s = var_s + "pNx0FxOIpUEA1FwxFw3RbWe45iK2MpYJJmJJJFQABERmgaAM0AMRJURDd1AF3hUQhQoAIDvsRAURGIBw8ThRaiJpQ4EwsKNURyzZO13dGEAGYzWcqlWrFarlesA3AGcS";
	var_s = var_s + "AHAGShQwGQzGABUGEv2TAAFUGS26Uy2GwuH1wAKQ5HAAw+s4YwGIwGGWNa6awbST7DBTiLyJJEIJUHBPUqSGJuYYwCAES5pBiQfyEX4QKAFH6QSihJQ/GZlET1FhIcgG";
	var_s = var_s + "nUdoVHMmxajSIghlMKhsGiAAFggQ5dmKcRHEUEhbFAFQBgacABmAAJgAAcAJkAZgNjUcwDFecYcD8QoIDsGJjD6aYaGyHI7mqLRfgGfBcg+TYggkEhakQThtFsEpAE2X";
	var_s = var_s + "h7goSIJiSHp6haKgPGOXx3j+c5hiKLpri6JAPHWYJREuFJkBCYxcFeYS7ikJQzG0ZIVGKMBYGsVwXDWVQHjqfpjAoYpyE4Z5vH2YoHDkZwzkkUxHC8pwCgifIHBCdk4G";
	var_s = var_s + "MLQVmcXJVhicxWi4IIUiKSQ1A8cBUj+eBEGCFQlFSIophiPRkFAWBLFALhwm+HhKjARpmgSGwNn4AIUCcZZUFEKoVmwywkiKJwiFcIQwEEgI";
	exgrid1.HTMLPicture("expand",COMVariant::createFromStr(var_s));
	var_s1 = "gCJKBOI4NBQaBQAhQNJJIIhShQACERCAIA0RD7zf5hiIBOZSI5CACuZwcdMRAhnIJNIMKWKPBb8MIFiIJOBILJzhQOYM7YIBXCRNbtiIYOhFLB0KZvMx0O5hORlABQMJ";
	var_s1 = var_s1 + "pNx0FxOIpUEA1FwxFw3RbWe45iK2MpYJJmJJJFQABERmgaAM0AMRJURDd1AF3hUQhQoAIDvsRAURGIBw8ThRaiJpQ4EwsKNURyzZO13dGEAGYzWcqlWrFarlesA3AGcS";
	var_s1 = var_s1 + "AHAGShQwGQzGABUGEv2TAAFUGS26Uy2GwuH1wAKQ5HAAw+s4YwGIwGGWNa6awbST7DBTiLZJJEIJUHBPdpSGKOAQxCAzGhIBKfbAvUBsSIPbiVMhLTxJPK3banJB0N5s";
	var_s1 = var_s1 + "A8VQRlmCRKjSCRaAIOgCiORISiWaI0DYLJPBYJBxB+LAqAMBRgAsIABjAAhYAOEB5kKDQ5kGZoaCaL5vH2KoEDCbpbDaWRrE8SopE+AA/DcMoZkgAgkhKERDlcdYEHAJ";
	var_s1 = var_s1 + "Rzg4IpyCAKRyl6HZLGONwMEMb5clwWB3n2CZki6FoWC4cwQCbGYukKwhiAwOp3HIEJFGCNBGDyLArE8R56n4RUnlOShHGcXJdgcKQlCOSRdEcLw8DmAoInyexvFeMRGG";
	var_s1 = var_s1 + "0DARmsbRZmsfRxleFZeHoD4eEKKRxGmPANgAC5xDAWpYHMW4uCGywkiKJwiFcIQwEEgI";
	exgrid1.HTMLPicture("collapse",COMVariant::createFromStr(var_s1));
	exgrid1.HeaderVisible(false);
	exgrid1.HasLines(0/*exNoLine*/);
	exgrid1.HasButtons(0/*exNoButtons*/);
	exgrid1.Indent(12);
	exgrid1.DefaultItemHeight(24);
	exgrid1.DrawGridLines(1/*exHLines*/);
	exgrid1.GridLineStyle(48/*exGridLinesSolid*/);
	exgrid1.GridLineColor(WinApi::RGB2int(204,204,204));
	exgrid1.ShowFocusRect(false);
	exgrid1.ExpandOnDblClick(false);
	exgrid1.ExpandOnKeys(false);
	var_Columns = exgrid1.Columns(); com_Columns = var_Columns;
		var_Column = COM::createFromVariant(com_Columns.Add("Item")); com_Column = var_Column;
			com_Column.Def(17/*exCellValueFormat*/,COMVariant::createFromInt(1));
			var_s2 = "(len(parent(1 index ``)) ? (`<b><fgcolor gray>` + (1 pos ``) + `. ` + `</fgcolor></b>` + `<a ` + (0 index ``) + `><img>` + (%CC0";
			var_s2 = var_s2 + " ? (not %CX0 ? `expand` : `collapse`) : `collapse`) + `:16</img></a>`) : ``) + ` ` + value";
			com_Column.FormatColumn(var_s2);
			var_Editor = com_Column.Editor(); com_Editor = var_Editor;
				com_Editor.EditType(1/*EditType*/);
				com_Editor.Option(116/*exEditorAdjustPos*/,"32D 4D -4D -4D");
	var_Items = exgrid1.Items(); com_Items = var_Items;
		hRoot = com_Items.AddItem("ACME Corporation");
		com_Items.SelectableItem(hRoot,false);
		com_Items.ExpandItem(hRoot,true);
		h = com_Items.InsertItem(hRoot,,"Management");
		com_Items.InsertItem(h,,"CEO - Alice Brown");
		com_Items.InsertItem(h,,"COO - James Lee");
		h = com_Items.InsertItem(hRoot,,"HR Department");
		com_Items.InsertItem(h,,"Recruiter - Jane Smith");
		com_Items.InsertItem(h,,"HR Assistant - Bob Green");
		com_Items.ExpandItem(h,true);
		h = com_Items.InsertItem(h,,"Engineering");
		com_Items.InsertItem(h,,"Software Team");
		h = com_Items.InsertItem(h,,"Lead Developer - Mark H.");
		com_Items.InsertItem(h,,"Frontend Dev - Emily R.");
		com_Items.InsertItem(h,,"Backend Dev - Tom W.");
		com_Items.InsertItem(hRoot,,"QA Team");
	exgrid1.EndUpdate();
}
1251
Does grouping support multi-column sorting

public void init()
{
	COM com_Column,com_Items;
	anytype var_Column,var_Items;
	int h;
	;

	super();

	exgrid1.BeginUpdate();
	exgrid1.SingleSort(false);
	exgrid1.HeaderVisible(false);
	exgrid1.DrawGridLines(-2/*exRowLines*/);
	exgrid1.GridLineStyle(48/*exGridLinesSolid*/);
	exgrid1.AllowGroupBy(true);
	exgrid1.Columns().Add("Prefix");
	exgrid1.Columns().Add("Region");
	exgrid1.Columns().Add("City");
	var_Column = COM::createFromVariant(exgrid1.Columns().Add("Sort")); com_Column = var_Column;
		com_Column.ComputedField("%1 + %2");
		com_Column.Visible(false);
	var_Items = exgrid1.Items(); com_Items = var_Items;
		h = com_Items.AddItem("+33");
		com_Items.CellValue(h,COMVariant::createFromInt(1),"Corsica");
		com_Items.CellValue(h,COMVariant::createFromInt(2),"Bastia ");
		h = com_Items.AddItem("+33");
		com_Items.CellValue(h,COMVariant::createFromInt(1),"Occitanie");
		com_Items.CellValue(h,COMVariant::createFromInt(2),"Toulouse ");
		h = com_Items.AddItem("+33");
		com_Items.CellValue(h,COMVariant::createFromInt(1),"Corsica");
		com_Items.CellValue(h,COMVariant::createFromInt(2),"Ajaccio");
		h = com_Items.AddItem("+33");
		com_Items.CellValue(h,COMVariant::createFromInt(1),"Occitanie");
		com_Items.CellValue(h,COMVariant::createFromInt(2),"Carcassonne ");
	exgrid1.Layout("multiplesort=\"C0:2\";singlesort=\"C3:1\";");
	exgrid1.EndUpdate();
}
1250
How can I vertically scroll the control
public void init()
{
	;

	super();

	exgrid1.BeginUpdate();
	exgrid1.ColumnAutoResize(false);
	exgrid1.DataSource(new DAO.PrivDBEngine().OpenDatabase("C:\\Program Files\\Exontrol\\ExGrid\\Sample\\Access\\misc.accdb").OpenRecordset("Orders"));
	exgrid1.Layout("Collapse=\"\";VScroll=10");
	exgrid1.EndUpdate();
}
1249
Export the items as a two-dimensional array

public void init()
{
	COM com_Column,com_Column1,com_Columns,com_Items;
	anytype var_Column,var_Column1,var_Columns,var_Items;
	int g1,g2,h,r;
	;

	super();

	exgrid1.BeginUpdate();
	exgrid1.HeaderAppearance(4/*Etched*/);
	exgrid1.ScrollBySingleLine(true);
	exgrid1.LinesAtRoot(5/*exGroupLinesOutside*/);
	var_Columns = exgrid1.Columns(); com_Columns = var_Columns;
		var_Column = COM::createFromVariant(com_Columns.Add("Desc")); com_Column = var_Column;
			com_Column.Width(32);
			com_Column.Def(0/*exCellHasCheckBox*/,COMVariant::createFromBoolean(true));
		var_Column1 = COM::createFromVariant(com_Columns.Add("Amount")); com_Column1 = var_Column1;
			com_Column1.Def(20/*exTotalColumn*/,"sum(current,rec,%1)");
			com_Column1.FormatColumn("currency(value)");
	var_Items = exgrid1.Items(); com_Items = var_Items;
		com_Items.LockedItemCount(0/*exTop*/,1);
		h = com_Items.LockedItem(0/*exTop*/,0);
		com_Items.CellValue(h,COMVariant::createFromInt(0),"All");
		com_Items.CellValue(h,COMVariant::createFromInt(1),"sum(all,rec,%1)");
		com_Items.CellValueFormat(h,COMVariant::createFromInt(1),4/*exTotalField*/);
		r = com_Items.AddItem("Root 1");
		g1 = com_Items.InsertItem(r,,"Group A");
		com_Items.CellValue(com_Items.InsertItem(g1,,"Item 1"),COMVariant::createFromInt(1),COMVariant::createFromInt(1));
		com_Items.CellValue(com_Items.InsertItem(g1,,"Item 2"),COMVariant::createFromInt(1),COMVariant::createFromInt(2));
		com_Items.CellState(com_Items.ItemByIndex(3),COMVariant::createFromInt(0),1);
		g2 = com_Items.InsertItem(r,,"Group B");
		com_Items.CellValue(com_Items.InsertItem(g2,,"Item 3"),COMVariant::createFromInt(1),COMVariant::createFromInt(3));
		com_Items.CellValue(com_Items.InsertItem(g2,,"Item 4"),COMVariant::createFromInt(1),COMVariant::createFromInt(4));
		com_Items.ExpandItem(g1,true);
		com_Items.ExpandItem(r,true);
		h = com_Items.AddItem("divider");
		com_Items.ItemDivider(h,0);
		com_Items.SelectableItem(h,false);
		com_Items.SortableItem(h,false);
		com_Items.ItemHeight(h,1);
		r = com_Items.AddItem("Root 2");
		g1 = com_Items.InsertItem(r,,"Group C");
		com_Items.CellValue(com_Items.InsertItem(g1,,"Item 5"),COMVariant::createFromInt(1),COMVariant::createFromInt(5));
		com_Items.CellValue(com_Items.InsertItem(g1,,"Item 6"),COMVariant::createFromInt(1),COMVariant::createFromInt(6));
		com_Items.SelectItem(com_Items.ItemByIndex(2),true);
	exgrid1.PutItems(exgrid1.Export("array","all"));
	exgrid1.EndUpdate();
}
1248
Export only expanded items

public void init()
{
	COM com_Column,com_Column1,com_Columns,com_Items;
	anytype var_Column,var_Column1,var_Columns,var_Items;
	int g1,g2,h,r;
	;

	super();

	exgrid1.BeginUpdate();
	exgrid1.HeaderAppearance(4/*Etched*/);
	exgrid1.ScrollBySingleLine(true);
	exgrid1.LinesAtRoot(5/*exGroupLinesOutside*/);
	var_Columns = exgrid1.Columns(); com_Columns = var_Columns;
		var_Column = COM::createFromVariant(com_Columns.Add("Desc")); com_Column = var_Column;
			com_Column.Width(32);
			com_Column.Def(0/*exCellHasCheckBox*/,COMVariant::createFromBoolean(true));
		var_Column1 = COM::createFromVariant(com_Columns.Add("Amount")); com_Column1 = var_Column1;
			com_Column1.Def(20/*exTotalColumn*/,"sum(current,rec,%1)");
			com_Column1.FormatColumn("currency(value)");
	var_Items = exgrid1.Items(); com_Items = var_Items;
		com_Items.LockedItemCount(0/*exTop*/,1);
		h = com_Items.LockedItem(0/*exTop*/,0);
		com_Items.CellValue(h,COMVariant::createFromInt(0),"All");
		com_Items.CellValue(h,COMVariant::createFromInt(1),"sum(all,rec,%1)");
		com_Items.CellValueFormat(h,COMVariant::createFromInt(1),4/*exTotalField*/);
		r = com_Items.AddItem("Root 1");
		g1 = com_Items.InsertItem(r,,"Group A");
		com_Items.CellValue(com_Items.InsertItem(g1,,"Item 1"),COMVariant::createFromInt(1),COMVariant::createFromInt(1));
		com_Items.CellValue(com_Items.InsertItem(g1,,"Item 2"),COMVariant::createFromInt(1),COMVariant::createFromInt(2));
		com_Items.CellState(com_Items.ItemByIndex(3),COMVariant::createFromInt(0),1);
		g2 = com_Items.InsertItem(r,,"Group B");
		com_Items.CellValue(com_Items.InsertItem(g2,,"Item 3"),COMVariant::createFromInt(1),COMVariant::createFromInt(3));
		com_Items.CellValue(com_Items.InsertItem(g2,,"Item 4"),COMVariant::createFromInt(1),COMVariant::createFromInt(4));
		com_Items.ExpandItem(g1,true);
		com_Items.ExpandItem(r,true);
		h = com_Items.AddItem("divider");
		com_Items.ItemDivider(h,0);
		com_Items.SelectableItem(h,false);
		com_Items.SortableItem(h,false);
		com_Items.ItemHeight(h,1);
		r = com_Items.AddItem("Root 2");
		g1 = com_Items.InsertItem(r,,"Group C");
		com_Items.CellValue(com_Items.InsertItem(g1,,"Item 5"),COMVariant::createFromInt(1),COMVariant::createFromInt(5));
		com_Items.CellValue(com_Items.InsertItem(g1,,"Item 6"),COMVariant::createFromInt(1),COMVariant::createFromInt(6));
		com_Items.SelectItem(com_Items.ItemByIndex(2),true);
	exgrid1.EndUpdate();
	print( exgrid1.Export("","only(expanded)") );
}
1247
Export only selectable, sortable leaf items that are neither locked nor dividers

public void init()
{
	COM com_Column,com_Column1,com_Columns,com_Items;
	anytype var_Column,var_Column1,var_Columns,var_Items;
	int g1,g2,h,r;
	;

	super();

	exgrid1.BeginUpdate();
	exgrid1.HeaderAppearance(4/*Etched*/);
	exgrid1.ScrollBySingleLine(true);
	exgrid1.LinesAtRoot(5/*exGroupLinesOutside*/);
	var_Columns = exgrid1.Columns(); com_Columns = var_Columns;
		var_Column = COM::createFromVariant(com_Columns.Add("Desc")); com_Column = var_Column;
			com_Column.Width(32);
			com_Column.Def(0/*exCellHasCheckBox*/,COMVariant::createFromBoolean(true));
		var_Column1 = COM::createFromVariant(com_Columns.Add("Amount")); com_Column1 = var_Column1;
			com_Column1.Def(20/*exTotalColumn*/,"sum(current,rec,%1)");
			com_Column1.FormatColumn("currency(value)");
	var_Items = exgrid1.Items(); com_Items = var_Items;
		com_Items.LockedItemCount(0/*exTop*/,1);
		h = com_Items.LockedItem(0/*exTop*/,0);
		com_Items.CellValue(h,COMVariant::createFromInt(0),"All");
		com_Items.CellValue(h,COMVariant::createFromInt(1),"sum(all,rec,%1)");
		com_Items.CellValueFormat(h,COMVariant::createFromInt(1),4/*exTotalField*/);
		r = com_Items.AddItem("Root 1");
		g1 = com_Items.InsertItem(r,,"Group A");
		com_Items.CellValue(com_Items.InsertItem(g1,,"Item 1"),COMVariant::createFromInt(1),COMVariant::createFromInt(1));
		com_Items.CellValue(com_Items.InsertItem(g1,,"Item 2"),COMVariant::createFromInt(1),COMVariant::createFromInt(2));
		com_Items.CellState(com_Items.ItemByIndex(3),COMVariant::createFromInt(0),1);
		g2 = com_Items.InsertItem(r,,"Group B");
		com_Items.CellValue(com_Items.InsertItem(g2,,"Item 3"),COMVariant::createFromInt(1),COMVariant::createFromInt(3));
		com_Items.CellValue(com_Items.InsertItem(g2,,"Item 4"),COMVariant::createFromInt(1),COMVariant::createFromInt(4));
		com_Items.ExpandItem(g1,true);
		com_Items.ExpandItem(r,true);
		h = com_Items.AddItem("divider");
		com_Items.ItemDivider(h,0);
		com_Items.SelectableItem(h,false);
		com_Items.SortableItem(h,false);
		com_Items.ItemHeight(h,1);
		r = com_Items.AddItem("Root 2");
		g1 = com_Items.InsertItem(r,,"Group C");
		com_Items.CellValue(com_Items.InsertItem(g1,,"Item 5"),COMVariant::createFromInt(1),COMVariant::createFromInt(5));
		com_Items.CellValue(com_Items.InsertItem(g1,,"Item 6"),COMVariant::createFromInt(1),COMVariant::createFromInt(6));
		com_Items.SelectItem(com_Items.ItemByIndex(2),true);
	exgrid1.EndUpdate();
	print( exgrid1.Export("","only(leaf,sortable,selectable,!divider,!locked)") );
}
1246
Export only non-divider items

public void init()
{
	COM com_Column,com_Column1,com_Columns,com_Items;
	anytype var_Column,var_Column1,var_Columns,var_Items;
	int g1,g2,h,r;
	;

	super();

	exgrid1.BeginUpdate();
	exgrid1.HeaderAppearance(4/*Etched*/);
	exgrid1.ScrollBySingleLine(true);
	exgrid1.LinesAtRoot(5/*exGroupLinesOutside*/);
	var_Columns = exgrid1.Columns(); com_Columns = var_Columns;
		var_Column = COM::createFromVariant(com_Columns.Add("Desc")); com_Column = var_Column;
			com_Column.Width(32);
			com_Column.Def(0/*exCellHasCheckBox*/,COMVariant::createFromBoolean(true));
		var_Column1 = COM::createFromVariant(com_Columns.Add("Amount")); com_Column1 = var_Column1;
			com_Column1.Def(20/*exTotalColumn*/,"sum(current,rec,%1)");
			com_Column1.FormatColumn("currency(value)");
	var_Items = exgrid1.Items(); com_Items = var_Items;
		com_Items.LockedItemCount(0/*exTop*/,1);
		h = com_Items.LockedItem(0/*exTop*/,0);
		com_Items.CellValue(h,COMVariant::createFromInt(0),"All");
		com_Items.CellValue(h,COMVariant::createFromInt(1),"sum(all,rec,%1)");
		com_Items.CellValueFormat(h,COMVariant::createFromInt(1),4/*exTotalField*/);
		r = com_Items.AddItem("Root 1");
		g1 = com_Items.InsertItem(r,,"Group A");
		com_Items.CellValue(com_Items.InsertItem(g1,,"Item 1"),COMVariant::createFromInt(1),COMVariant::createFromInt(1));
		com_Items.CellValue(com_Items.InsertItem(g1,,"Item 2"),COMVariant::createFromInt(1),COMVariant::createFromInt(2));
		com_Items.CellState(com_Items.ItemByIndex(3),COMVariant::createFromInt(0),1);
		g2 = com_Items.InsertItem(r,,"Group B");
		com_Items.CellValue(com_Items.InsertItem(g2,,"Item 3"),COMVariant::createFromInt(1),COMVariant::createFromInt(3));
		com_Items.CellValue(com_Items.InsertItem(g2,,"Item 4"),COMVariant::createFromInt(1),COMVariant::createFromInt(4));
		com_Items.ExpandItem(g1,true);
		com_Items.ExpandItem(r,true);
		h = com_Items.AddItem("divider");
		com_Items.ItemDivider(h,0);
		com_Items.SelectableItem(h,false);
		com_Items.SortableItem(h,false);
		com_Items.ItemHeight(h,1);
		r = com_Items.AddItem("Root 2");
		g1 = com_Items.InsertItem(r,,"Group C");
		com_Items.CellValue(com_Items.InsertItem(g1,,"Item 5"),COMVariant::createFromInt(1),COMVariant::createFromInt(5));
		com_Items.CellValue(com_Items.InsertItem(g1,,"Item 6"),COMVariant::createFromInt(1),COMVariant::createFromInt(6));
		com_Items.SelectItem(com_Items.ItemByIndex(2),true);
	exgrid1.EndUpdate();
	print( exgrid1.Export("","only(!divider)") );
}
1245
Export only selectable items

public void init()
{
	COM com_Column,com_Column1,com_Columns,com_Items;
	anytype var_Column,var_Column1,var_Columns,var_Items;
	int g1,g2,h,r;
	;

	super();

	exgrid1.BeginUpdate();
	exgrid1.HeaderAppearance(4/*Etched*/);
	exgrid1.ScrollBySingleLine(true);
	exgrid1.LinesAtRoot(5/*exGroupLinesOutside*/);
	var_Columns = exgrid1.Columns(); com_Columns = var_Columns;
		var_Column = COM::createFromVariant(com_Columns.Add("Desc")); com_Column = var_Column;
			com_Column.Width(32);
			com_Column.Def(0/*exCellHasCheckBox*/,COMVariant::createFromBoolean(true));
		var_Column1 = COM::createFromVariant(com_Columns.Add("Amount")); com_Column1 = var_Column1;
			com_Column1.Def(20/*exTotalColumn*/,"sum(current,rec,%1)");
			com_Column1.FormatColumn("currency(value)");
	var_Items = exgrid1.Items(); com_Items = var_Items;
		com_Items.LockedItemCount(0/*exTop*/,1);
		h = com_Items.LockedItem(0/*exTop*/,0);
		com_Items.CellValue(h,COMVariant::createFromInt(0),"All");
		com_Items.CellValue(h,COMVariant::createFromInt(1),"sum(all,rec,%1)");
		com_Items.CellValueFormat(h,COMVariant::createFromInt(1),4/*exTotalField*/);
		r = com_Items.AddItem("Root 1");
		g1 = com_Items.InsertItem(r,,"Group A");
		com_Items.CellValue(com_Items.InsertItem(g1,,"Item 1"),COMVariant::createFromInt(1),COMVariant::createFromInt(1));
		com_Items.CellValue(com_Items.InsertItem(g1,,"Item 2"),COMVariant::createFromInt(1),COMVariant::createFromInt(2));
		com_Items.CellState(com_Items.ItemByIndex(3),COMVariant::createFromInt(0),1);
		g2 = com_Items.InsertItem(r,,"Group B");
		com_Items.CellValue(com_Items.InsertItem(g2,,"Item 3"),COMVariant::createFromInt(1),COMVariant::createFromInt(3));
		com_Items.CellValue(com_Items.InsertItem(g2,,"Item 4"),COMVariant::createFromInt(1),COMVariant::createFromInt(4));
		com_Items.ExpandItem(g1,true);
		com_Items.ExpandItem(r,true);
		h = com_Items.AddItem("divider");
		com_Items.ItemDivider(h,0);
		com_Items.SelectableItem(h,false);
		com_Items.SortableItem(h,false);
		com_Items.ItemHeight(h,1);
		r = com_Items.AddItem("Root 2");
		g1 = com_Items.InsertItem(r,,"Group C");
		com_Items.CellValue(com_Items.InsertItem(g1,,"Item 5"),COMVariant::createFromInt(1),COMVariant::createFromInt(5));
		com_Items.CellValue(com_Items.InsertItem(g1,,"Item 6"),COMVariant::createFromInt(1),COMVariant::createFromInt(6));
		com_Items.SelectItem(com_Items.ItemByIndex(2),true);
	exgrid1.EndUpdate();
	print( exgrid1.Export("","only(selectable)") );
}
1244
Export only sortable, but not locked items

public void init()
{
	COM com_Column,com_Column1,com_Columns,com_Items;
	anytype var_Column,var_Column1,var_Columns,var_Items;
	int g1,g2,h,r;
	;

	super();

	exgrid1.BeginUpdate();
	exgrid1.HeaderAppearance(4/*Etched*/);
	exgrid1.ScrollBySingleLine(true);
	exgrid1.LinesAtRoot(5/*exGroupLinesOutside*/);
	var_Columns = exgrid1.Columns(); com_Columns = var_Columns;
		var_Column = COM::createFromVariant(com_Columns.Add("Desc")); com_Column = var_Column;
			com_Column.Width(32);
			com_Column.Def(0/*exCellHasCheckBox*/,COMVariant::createFromBoolean(true));
		var_Column1 = COM::createFromVariant(com_Columns.Add("Amount")); com_Column1 = var_Column1;
			com_Column1.Def(20/*exTotalColumn*/,"sum(current,rec,%1)");
			com_Column1.FormatColumn("currency(value)");
	var_Items = exgrid1.Items(); com_Items = var_Items;
		com_Items.LockedItemCount(0/*exTop*/,1);
		h = com_Items.LockedItem(0/*exTop*/,0);
		com_Items.CellValue(h,COMVariant::createFromInt(0),"All");
		com_Items.CellValue(h,COMVariant::createFromInt(1),"sum(all,rec,%1)");
		com_Items.CellValueFormat(h,COMVariant::createFromInt(1),4/*exTotalField*/);
		r = com_Items.AddItem("Root 1");
		g1 = com_Items.InsertItem(r,,"Group A");
		com_Items.CellValue(com_Items.InsertItem(g1,,"Item 1"),COMVariant::createFromInt(1),COMVariant::createFromInt(1));
		com_Items.CellValue(com_Items.InsertItem(g1,,"Item 2"),COMVariant::createFromInt(1),COMVariant::createFromInt(2));
		com_Items.CellState(com_Items.ItemByIndex(3),COMVariant::createFromInt(0),1);
		g2 = com_Items.InsertItem(r,,"Group B");
		com_Items.CellValue(com_Items.InsertItem(g2,,"Item 3"),COMVariant::createFromInt(1),COMVariant::createFromInt(3));
		com_Items.CellValue(com_Items.InsertItem(g2,,"Item 4"),COMVariant::createFromInt(1),COMVariant::createFromInt(4));
		com_Items.ExpandItem(g1,true);
		com_Items.ExpandItem(r,true);
		h = com_Items.AddItem("divider");
		com_Items.ItemDivider(h,0);
		com_Items.SelectableItem(h,false);
		com_Items.SortableItem(h,false);
		com_Items.ItemHeight(h,1);
		r = com_Items.AddItem("Root 2");
		g1 = com_Items.InsertItem(r,,"Group C");
		com_Items.CellValue(com_Items.InsertItem(g1,,"Item 5"),COMVariant::createFromInt(1),COMVariant::createFromInt(5));
		com_Items.CellValue(com_Items.InsertItem(g1,,"Item 6"),COMVariant::createFromInt(1),COMVariant::createFromInt(6));
		com_Items.SelectItem(com_Items.ItemByIndex(2),true);
	exgrid1.EndUpdate();
	print( exgrid1.Export("","only(sortable,!locked)") );
}
1243
Export only checked items on specified column

public void init()
{
	COM com_Column,com_Column1,com_Columns,com_Items;
	anytype var_Column,var_Column1,var_Columns,var_Items;
	int g1,g2,h,r;
	;

	super();

	exgrid1.BeginUpdate();
	exgrid1.HeaderAppearance(4/*Etched*/);
	exgrid1.ScrollBySingleLine(true);
	exgrid1.LinesAtRoot(5/*exGroupLinesOutside*/);
	var_Columns = exgrid1.Columns(); com_Columns = var_Columns;
		var_Column = COM::createFromVariant(com_Columns.Add("Desc")); com_Column = var_Column;
			com_Column.Width(32);
			com_Column.Def(0/*exCellHasCheckBox*/,COMVariant::createFromBoolean(true));
		var_Column1 = COM::createFromVariant(com_Columns.Add("Amount")); com_Column1 = var_Column1;
			com_Column1.Def(20/*exTotalColumn*/,"sum(current,rec,%1)");
			com_Column1.FormatColumn("currency(value)");
	var_Items = exgrid1.Items(); com_Items = var_Items;
		com_Items.LockedItemCount(0/*exTop*/,1);
		h = com_Items.LockedItem(0/*exTop*/,0);
		com_Items.CellValue(h,COMVariant::createFromInt(0),"All");
		com_Items.CellValue(h,COMVariant::createFromInt(1),"sum(all,rec,%1)");
		com_Items.CellValueFormat(h,COMVariant::createFromInt(1),4/*exTotalField*/);
		r = com_Items.AddItem("Root 1");
		g1 = com_Items.InsertItem(r,,"Group A");
		com_Items.CellValue(com_Items.InsertItem(g1,,"Item 1"),COMVariant::createFromInt(1),COMVariant::createFromInt(1));
		com_Items.CellValue(com_Items.InsertItem(g1,,"Item 2"),COMVariant::createFromInt(1),COMVariant::createFromInt(2));
		com_Items.CellState(com_Items.ItemByIndex(3),COMVariant::createFromInt(0),1);
		g2 = com_Items.InsertItem(r,,"Group B");
		com_Items.CellValue(com_Items.InsertItem(g2,,"Item 3"),COMVariant::createFromInt(1),COMVariant::createFromInt(3));
		com_Items.CellValue(com_Items.InsertItem(g2,,"Item 4"),COMVariant::createFromInt(1),COMVariant::createFromInt(4));
		com_Items.ExpandItem(g1,true);
		com_Items.ExpandItem(r,true);
		h = com_Items.AddItem("divider");
		com_Items.ItemDivider(h,0);
		com_Items.SelectableItem(h,false);
		com_Items.SortableItem(h,false);
		com_Items.ItemHeight(h,1);
		r = com_Items.AddItem("Root 2");
		g1 = com_Items.InsertItem(r,,"Group C");
		com_Items.CellValue(com_Items.InsertItem(g1,,"Item 5"),COMVariant::createFromInt(1),COMVariant::createFromInt(5));
		com_Items.CellValue(com_Items.InsertItem(g1,,"Item 6"),COMVariant::createFromInt(1),COMVariant::createFromInt(6));
		com_Items.SelectItem(com_Items.ItemByIndex(2),true);
	exgrid1.EndUpdate();
	print( exgrid1.Export("","only(checked[0])") );
}
1242
Export only filtered, not locked or divider items

public void init()
{
	COM com_Column,com_Column1,com_Columns,com_Items;
	anytype var_Column,var_Column1,var_Columns,var_Items;
	int g1,g2,h,r;
	;

	super();

	exgrid1.BeginUpdate();
	exgrid1.HeaderAppearance(4/*Etched*/);
	exgrid1.ScrollBySingleLine(true);
	exgrid1.LinesAtRoot(5/*exGroupLinesOutside*/);
	var_Columns = exgrid1.Columns(); com_Columns = var_Columns;
		var_Column = COM::createFromVariant(com_Columns.Add("Desc")); com_Column = var_Column;
			com_Column.Width(32);
			com_Column.Def(0/*exCellHasCheckBox*/,COMVariant::createFromBoolean(true));
		var_Column1 = COM::createFromVariant(com_Columns.Add("Amount")); com_Column1 = var_Column1;
			com_Column1.Def(20/*exTotalColumn*/,"sum(current,rec,%1)");
			com_Column1.FormatColumn("currency(value)");
	var_Items = exgrid1.Items(); com_Items = var_Items;
		com_Items.LockedItemCount(0/*exTop*/,1);
		h = com_Items.LockedItem(0/*exTop*/,0);
		com_Items.CellValue(h,COMVariant::createFromInt(0),"All");
		com_Items.CellValue(h,COMVariant::createFromInt(1),"sum(all,rec,%1)");
		com_Items.CellValueFormat(h,COMVariant::createFromInt(1),4/*exTotalField*/);
		r = com_Items.AddItem("Root 1");
		g1 = com_Items.InsertItem(r,,"Group A");
		com_Items.CellValue(com_Items.InsertItem(g1,,"Item 1"),COMVariant::createFromInt(1),COMVariant::createFromInt(1));
		com_Items.CellValue(com_Items.InsertItem(g1,,"Item 2"),COMVariant::createFromInt(1),COMVariant::createFromInt(2));
		com_Items.CellState(com_Items.ItemByIndex(3),COMVariant::createFromInt(0),1);
		g2 = com_Items.InsertItem(r,,"Group B");
		com_Items.CellValue(com_Items.InsertItem(g2,,"Item 3"),COMVariant::createFromInt(1),COMVariant::createFromInt(3));
		com_Items.CellValue(com_Items.InsertItem(g2,,"Item 4"),COMVariant::createFromInt(1),COMVariant::createFromInt(4));
		com_Items.ExpandItem(g1,true);
		com_Items.ExpandItem(r,true);
		h = com_Items.AddItem("divider");
		com_Items.ItemDivider(h,0);
		com_Items.SelectableItem(h,false);
		com_Items.SortableItem(h,false);
		com_Items.ItemHeight(h,1);
		r = com_Items.AddItem("Root 2");
		g1 = com_Items.InsertItem(r,,"Group C");
		com_Items.CellValue(com_Items.InsertItem(g1,,"Item 5"),COMVariant::createFromInt(1),COMVariant::createFromInt(5));
		com_Items.CellValue(com_Items.InsertItem(g1,,"Item 6"),COMVariant::createFromInt(1),COMVariant::createFromInt(6));
		com_Items.SelectItem(com_Items.ItemByIndex(2),true);
	exgrid1.EndUpdate();
	print( exgrid1.Export("","only(visible,!locked,!divider)") );
}
1241
Export only selected items

public void init()
{
	COM com_Column,com_Column1,com_Columns,com_Items;
	anytype var_Column,var_Column1,var_Columns,var_Items;
	int g1,g2,h,r;
	;

	super();

	exgrid1.BeginUpdate();
	exgrid1.HeaderAppearance(4/*Etched*/);
	exgrid1.ScrollBySingleLine(true);
	exgrid1.LinesAtRoot(5/*exGroupLinesOutside*/);
	var_Columns = exgrid1.Columns(); com_Columns = var_Columns;
		var_Column = COM::createFromVariant(com_Columns.Add("Desc")); com_Column = var_Column;
			com_Column.Width(32);
			com_Column.Def(0/*exCellHasCheckBox*/,COMVariant::createFromBoolean(true));
		var_Column1 = COM::createFromVariant(com_Columns.Add("Amount")); com_Column1 = var_Column1;
			com_Column1.Def(20/*exTotalColumn*/,"sum(current,rec,%1)");
			com_Column1.FormatColumn("currency(value)");
	var_Items = exgrid1.Items(); com_Items = var_Items;
		com_Items.LockedItemCount(0/*exTop*/,1);
		h = com_Items.LockedItem(0/*exTop*/,0);
		com_Items.CellValue(h,COMVariant::createFromInt(0),"All");
		com_Items.CellValue(h,COMVariant::createFromInt(1),"sum(all,rec,%1)");
		com_Items.CellValueFormat(h,COMVariant::createFromInt(1),4/*exTotalField*/);
		r = com_Items.AddItem("Root 1");
		g1 = com_Items.InsertItem(r,,"Group A");
		com_Items.CellValue(com_Items.InsertItem(g1,,"Item 1"),COMVariant::createFromInt(1),COMVariant::createFromInt(1));
		com_Items.CellValue(com_Items.InsertItem(g1,,"Item 2"),COMVariant::createFromInt(1),COMVariant::createFromInt(2));
		com_Items.CellState(com_Items.ItemByIndex(3),COMVariant::createFromInt(0),1);
		g2 = com_Items.InsertItem(r,,"Group B");
		com_Items.CellValue(com_Items.InsertItem(g2,,"Item 3"),COMVariant::createFromInt(1),COMVariant::createFromInt(3));
		com_Items.CellValue(com_Items.InsertItem(g2,,"Item 4"),COMVariant::createFromInt(1),COMVariant::createFromInt(4));
		com_Items.ExpandItem(g1,true);
		com_Items.ExpandItem(r,true);
		h = com_Items.AddItem("divider");
		com_Items.ItemDivider(h,0);
		com_Items.SelectableItem(h,false);
		com_Items.SortableItem(h,false);
		com_Items.ItemHeight(h,1);
		r = com_Items.AddItem("Root 2");
		g1 = com_Items.InsertItem(r,,"Group C");
		com_Items.CellValue(com_Items.InsertItem(g1,,"Item 5"),COMVariant::createFromInt(1),COMVariant::createFromInt(5));
		com_Items.CellValue(com_Items.InsertItem(g1,,"Item 6"),COMVariant::createFromInt(1),COMVariant::createFromInt(6));
		com_Items.SelectItem(com_Items.ItemByIndex(2),true);
	exgrid1.EndUpdate();
	print( exgrid1.Export("","only(selected)") );
}
1240
Export only locked items

public void init()
{
	COM com_Column,com_Column1,com_Columns,com_Items;
	anytype var_Column,var_Column1,var_Columns,var_Items;
	int g1,g2,h,r;
	;

	super();

	exgrid1.BeginUpdate();
	exgrid1.HeaderAppearance(4/*Etched*/);
	exgrid1.ScrollBySingleLine(true);
	exgrid1.LinesAtRoot(5/*exGroupLinesOutside*/);
	var_Columns = exgrid1.Columns(); com_Columns = var_Columns;
		var_Column = COM::createFromVariant(com_Columns.Add("Desc")); com_Column = var_Column;
			com_Column.Width(32);
			com_Column.Def(0/*exCellHasCheckBox*/,COMVariant::createFromBoolean(true));
		var_Column1 = COM::createFromVariant(com_Columns.Add("Amount")); com_Column1 = var_Column1;
			com_Column1.Def(20/*exTotalColumn*/,"sum(current,rec,%1)");
			com_Column1.FormatColumn("currency(value)");
	var_Items = exgrid1.Items(); com_Items = var_Items;
		com_Items.LockedItemCount(0/*exTop*/,1);
		h = com_Items.LockedItem(0/*exTop*/,0);
		com_Items.CellValue(h,COMVariant::createFromInt(0),"All");
		com_Items.CellValue(h,COMVariant::createFromInt(1),"sum(all,rec,%1)");
		com_Items.CellValueFormat(h,COMVariant::createFromInt(1),4/*exTotalField*/);
		r = com_Items.AddItem("Root 1");
		g1 = com_Items.InsertItem(r,,"Group A");
		com_Items.CellValue(com_Items.InsertItem(g1,,"Item 1"),COMVariant::createFromInt(1),COMVariant::createFromInt(1));
		com_Items.CellValue(com_Items.InsertItem(g1,,"Item 2"),COMVariant::createFromInt(1),COMVariant::createFromInt(2));
		com_Items.CellState(com_Items.ItemByIndex(3),COMVariant::createFromInt(0),1);
		g2 = com_Items.InsertItem(r,,"Group B");
		com_Items.CellValue(com_Items.InsertItem(g2,,"Item 3"),COMVariant::createFromInt(1),COMVariant::createFromInt(3));
		com_Items.CellValue(com_Items.InsertItem(g2,,"Item 4"),COMVariant::createFromInt(1),COMVariant::createFromInt(4));
		com_Items.ExpandItem(g1,true);
		com_Items.ExpandItem(r,true);
		h = com_Items.AddItem("divider");
		com_Items.ItemDivider(h,0);
		com_Items.SelectableItem(h,false);
		com_Items.SortableItem(h,false);
		com_Items.ItemHeight(h,1);
		r = com_Items.AddItem("Root 2");
		g1 = com_Items.InsertItem(r,,"Group C");
		com_Items.CellValue(com_Items.InsertItem(g1,,"Item 5"),COMVariant::createFromInt(1),COMVariant::createFromInt(5));
		com_Items.CellValue(com_Items.InsertItem(g1,,"Item 6"),COMVariant::createFromInt(1),COMVariant::createFromInt(6));
		com_Items.SelectItem(com_Items.ItemByIndex(2),true);
	exgrid1.EndUpdate();
	print( exgrid1.Export("","only(locked)") );
}
1239
Export the leaf items of the control, excluding parent or grouped items

public void init()
{
	COM com_Column,com_Column1,com_Columns,com_Items;
	anytype var_Column,var_Column1,var_Columns,var_Items;
	int g1,g2,h,r;
	;

	super();

	exgrid1.BeginUpdate();
	exgrid1.HeaderAppearance(4/*Etched*/);
	exgrid1.ScrollBySingleLine(true);
	exgrid1.LinesAtRoot(5/*exGroupLinesOutside*/);
	var_Columns = exgrid1.Columns(); com_Columns = var_Columns;
		var_Column = COM::createFromVariant(com_Columns.Add("Desc")); com_Column = var_Column;
			com_Column.Width(32);
			com_Column.Def(0/*exCellHasCheckBox*/,COMVariant::createFromBoolean(true));
		var_Column1 = COM::createFromVariant(com_Columns.Add("Amount")); com_Column1 = var_Column1;
			com_Column1.Def(20/*exTotalColumn*/,"sum(current,rec,%1)");
			com_Column1.FormatColumn("currency(value)");
	var_Items = exgrid1.Items(); com_Items = var_Items;
		com_Items.LockedItemCount(0/*exTop*/,1);
		h = com_Items.LockedItem(0/*exTop*/,0);
		com_Items.CellValue(h,COMVariant::createFromInt(0),"All");
		com_Items.CellValue(h,COMVariant::createFromInt(1),"sum(all,rec,%1)");
		com_Items.CellValueFormat(h,COMVariant::createFromInt(1),4/*exTotalField*/);
		r = com_Items.AddItem("Root 1");
		g1 = com_Items.InsertItem(r,,"Group A");
		com_Items.CellValue(com_Items.InsertItem(g1,,"Item 1"),COMVariant::createFromInt(1),COMVariant::createFromInt(1));
		com_Items.CellValue(com_Items.InsertItem(g1,,"Item 2"),COMVariant::createFromInt(1),COMVariant::createFromInt(2));
		com_Items.CellState(com_Items.ItemByIndex(3),COMVariant::createFromInt(0),1);
		g2 = com_Items.InsertItem(r,,"Group B");
		com_Items.CellValue(com_Items.InsertItem(g2,,"Item 3"),COMVariant::createFromInt(1),COMVariant::createFromInt(3));
		com_Items.CellValue(com_Items.InsertItem(g2,,"Item 4"),COMVariant::createFromInt(1),COMVariant::createFromInt(4));
		com_Items.ExpandItem(g1,true);
		com_Items.ExpandItem(r,true);
		h = com_Items.AddItem("divider");
		com_Items.ItemDivider(h,0);
		com_Items.SelectableItem(h,false);
		com_Items.SortableItem(h,false);
		com_Items.ItemHeight(h,1);
		r = com_Items.AddItem("Root 2");
		g1 = com_Items.InsertItem(r,,"Group C");
		com_Items.CellValue(com_Items.InsertItem(g1,,"Item 5"),COMVariant::createFromInt(1),COMVariant::createFromInt(5));
		com_Items.CellValue(com_Items.InsertItem(g1,,"Item 6"),COMVariant::createFromInt(1),COMVariant::createFromInt(6));
		com_Items.SelectItem(com_Items.ItemByIndex(2),true);
	exgrid1.EndUpdate();
	print( exgrid1.Export("","leaf") );
}
1238
Export all checked and visible items (the first column in the columns list specifies the index of the column used to query the checkbox state)

public void init()
{
	COM com_Column,com_Column1,com_Columns,com_Items;
	anytype var_Column,var_Column1,var_Columns,var_Items;
	int g1,g2,h,r;
	;

	super();

	exgrid1.BeginUpdate();
	exgrid1.HeaderAppearance(4/*Etched*/);
	exgrid1.ScrollBySingleLine(true);
	exgrid1.LinesAtRoot(5/*exGroupLinesOutside*/);
	var_Columns = exgrid1.Columns(); com_Columns = var_Columns;
		var_Column = COM::createFromVariant(com_Columns.Add("Desc")); com_Column = var_Column;
			com_Column.Width(32);
			com_Column.Def(0/*exCellHasCheckBox*/,COMVariant::createFromBoolean(true));
		var_Column1 = COM::createFromVariant(com_Columns.Add("Amount")); com_Column1 = var_Column1;
			com_Column1.Def(20/*exTotalColumn*/,"sum(current,rec,%1)");
			com_Column1.FormatColumn("currency(value)");
	var_Items = exgrid1.Items(); com_Items = var_Items;
		com_Items.LockedItemCount(0/*exTop*/,1);
		h = com_Items.LockedItem(0/*exTop*/,0);
		com_Items.CellValue(h,COMVariant::createFromInt(0),"All");
		com_Items.CellValue(h,COMVariant::createFromInt(1),"sum(all,rec,%1)");
		com_Items.CellValueFormat(h,COMVariant::createFromInt(1),4/*exTotalField*/);
		r = com_Items.AddItem("Root 1");
		g1 = com_Items.InsertItem(r,,"Group A");
		com_Items.CellValue(com_Items.InsertItem(g1,,"Item 1"),COMVariant::createFromInt(1),COMVariant::createFromInt(1));
		com_Items.CellValue(com_Items.InsertItem(g1,,"Item 2"),COMVariant::createFromInt(1),COMVariant::createFromInt(2));
		com_Items.CellState(com_Items.ItemByIndex(3),COMVariant::createFromInt(0),1);
		g2 = com_Items.InsertItem(r,,"Group B");
		com_Items.CellValue(com_Items.InsertItem(g2,,"Item 3"),COMVariant::createFromInt(1),COMVariant::createFromInt(3));
		com_Items.CellValue(com_Items.InsertItem(g2,,"Item 4"),COMVariant::createFromInt(1),COMVariant::createFromInt(4));
		com_Items.ExpandItem(g1,true);
		com_Items.ExpandItem(r,true);
		h = com_Items.AddItem("divider");
		com_Items.ItemDivider(h,0);
		com_Items.SelectableItem(h,false);
		com_Items.SortableItem(h,false);
		com_Items.ItemHeight(h,1);
		r = com_Items.AddItem("Root 2");
		g1 = com_Items.InsertItem(r,,"Group C");
		com_Items.CellValue(com_Items.InsertItem(g1,,"Item 5"),COMVariant::createFromInt(1),COMVariant::createFromInt(5));
		com_Items.CellValue(com_Items.InsertItem(g1,,"Item 6"),COMVariant::createFromInt(1),COMVariant::createFromInt(6));
		com_Items.SelectItem(com_Items.ItemByIndex(2),true);
	exgrid1.EndUpdate();
	print( exgrid1.Export("","chk") );
}
1237
Export the selected-items

public void init()
{
	COM com_Column,com_Column1,com_Columns,com_Items;
	anytype var_Column,var_Column1,var_Columns,var_Items;
	int g1,g2,h,r;
	;

	super();

	exgrid1.BeginUpdate();
	exgrid1.HeaderAppearance(4/*Etched*/);
	exgrid1.ScrollBySingleLine(true);
	exgrid1.LinesAtRoot(5/*exGroupLinesOutside*/);
	var_Columns = exgrid1.Columns(); com_Columns = var_Columns;
		var_Column = COM::createFromVariant(com_Columns.Add("Desc")); com_Column = var_Column;
			com_Column.Width(32);
			com_Column.Def(0/*exCellHasCheckBox*/,COMVariant::createFromBoolean(true));
		var_Column1 = COM::createFromVariant(com_Columns.Add("Amount")); com_Column1 = var_Column1;
			com_Column1.Def(20/*exTotalColumn*/,"sum(current,rec,%1)");
			com_Column1.FormatColumn("currency(value)");
	var_Items = exgrid1.Items(); com_Items = var_Items;
		com_Items.LockedItemCount(0/*exTop*/,1);
		h = com_Items.LockedItem(0/*exTop*/,0);
		com_Items.CellValue(h,COMVariant::createFromInt(0),"All");
		com_Items.CellValue(h,COMVariant::createFromInt(1),"sum(all,rec,%1)");
		com_Items.CellValueFormat(h,COMVariant::createFromInt(1),4/*exTotalField*/);
		r = com_Items.AddItem("Root 1");
		g1 = com_Items.InsertItem(r,,"Group A");
		com_Items.CellValue(com_Items.InsertItem(g1,,"Item 1"),COMVariant::createFromInt(1),COMVariant::createFromInt(1));
		com_Items.CellValue(com_Items.InsertItem(g1,,"Item 2"),COMVariant::createFromInt(1),COMVariant::createFromInt(2));
		com_Items.CellState(com_Items.ItemByIndex(3),COMVariant::createFromInt(0),1);
		g2 = com_Items.InsertItem(r,,"Group B");
		com_Items.CellValue(com_Items.InsertItem(g2,,"Item 3"),COMVariant::createFromInt(1),COMVariant::createFromInt(3));
		com_Items.CellValue(com_Items.InsertItem(g2,,"Item 4"),COMVariant::createFromInt(1),COMVariant::createFromInt(4));
		com_Items.ExpandItem(g1,true);
		com_Items.ExpandItem(r,true);
		h = com_Items.AddItem("divider");
		com_Items.ItemDivider(h,0);
		com_Items.SelectableItem(h,false);
		com_Items.SortableItem(h,false);
		com_Items.ItemHeight(h,1);
		r = com_Items.AddItem("Root 2");
		g1 = com_Items.InsertItem(r,,"Group C");
		com_Items.CellValue(com_Items.InsertItem(g1,,"Item 5"),COMVariant::createFromInt(1),COMVariant::createFromInt(5));
		com_Items.CellValue(com_Items.InsertItem(g1,,"Item 6"),COMVariant::createFromInt(1),COMVariant::createFromInt(6));
		com_Items.SelectItem(com_Items.ItemByIndex(2),true);
	exgrid1.EndUpdate();
	print( exgrid1.Export("","sel") );
}
1236
Export the visible items, excluding child items of collapsed elements, non-visible items (such as those with a height of 0), and items that do not match the current filter

public void init()
{
	COM com_Column,com_Column1,com_Columns,com_Items;
	anytype var_Column,var_Column1,var_Columns,var_Items;
	int g1,g2,h,r;
	;

	super();

	exgrid1.BeginUpdate();
	exgrid1.HeaderAppearance(4/*Etched*/);
	exgrid1.ScrollBySingleLine(true);
	exgrid1.LinesAtRoot(5/*exGroupLinesOutside*/);
	var_Columns = exgrid1.Columns(); com_Columns = var_Columns;
		var_Column = COM::createFromVariant(com_Columns.Add("Desc")); com_Column = var_Column;
			com_Column.Width(32);
			com_Column.Def(0/*exCellHasCheckBox*/,COMVariant::createFromBoolean(true));
		var_Column1 = COM::createFromVariant(com_Columns.Add("Amount")); com_Column1 = var_Column1;
			com_Column1.Def(20/*exTotalColumn*/,"sum(current,rec,%1)");
			com_Column1.FormatColumn("currency(value)");
	var_Items = exgrid1.Items(); com_Items = var_Items;
		com_Items.LockedItemCount(0/*exTop*/,1);
		h = com_Items.LockedItem(0/*exTop*/,0);
		com_Items.CellValue(h,COMVariant::createFromInt(0),"All");
		com_Items.CellValue(h,COMVariant::createFromInt(1),"sum(all,rec,%1)");
		com_Items.CellValueFormat(h,COMVariant::createFromInt(1),4/*exTotalField*/);
		r = com_Items.AddItem("Root 1");
		g1 = com_Items.InsertItem(r,,"Group A");
		com_Items.CellValue(com_Items.InsertItem(g1,,"Item 1"),COMVariant::createFromInt(1),COMVariant::createFromInt(1));
		com_Items.CellValue(com_Items.InsertItem(g1,,"Item 2"),COMVariant::createFromInt(1),COMVariant::createFromInt(2));
		com_Items.CellState(com_Items.ItemByIndex(3),COMVariant::createFromInt(0),1);
		g2 = com_Items.InsertItem(r,,"Group B");
		com_Items.CellValue(com_Items.InsertItem(g2,,"Item 3"),COMVariant::createFromInt(1),COMVariant::createFromInt(3));
		com_Items.CellValue(com_Items.InsertItem(g2,,"Item 4"),COMVariant::createFromInt(1),COMVariant::createFromInt(4));
		com_Items.ExpandItem(g1,true);
		com_Items.ExpandItem(r,true);
		h = com_Items.AddItem("divider");
		com_Items.ItemDivider(h,0);
		com_Items.SelectableItem(h,false);
		com_Items.SortableItem(h,false);
		com_Items.ItemHeight(h,1);
		r = com_Items.AddItem("Root 2");
		g1 = com_Items.InsertItem(r,,"Group C");
		com_Items.CellValue(com_Items.InsertItem(g1,,"Item 5"),COMVariant::createFromInt(1),COMVariant::createFromInt(5));
		com_Items.CellValue(com_Items.InsertItem(g1,,"Item 6"),COMVariant::createFromInt(1),COMVariant::createFromInt(6));
		com_Items.SelectItem(com_Items.ItemByIndex(2),true);
	exgrid1.EndUpdate();
	print( exgrid1.Export("","vis") );
}
1235
Export all items, including the hidden or collapsed items

public void init()
{
	COM com_Column,com_Column1,com_Columns,com_Items;
	anytype var_Column,var_Column1,var_Columns,var_Items;
	int g1,g2,h,r;
	;

	super();

	exgrid1.BeginUpdate();
	exgrid1.HeaderAppearance(4/*Etched*/);
	exgrid1.ScrollBySingleLine(true);
	exgrid1.LinesAtRoot(5/*exGroupLinesOutside*/);
	var_Columns = exgrid1.Columns(); com_Columns = var_Columns;
		var_Column = COM::createFromVariant(com_Columns.Add("Desc")); com_Column = var_Column;
			com_Column.Width(32);
			com_Column.Def(0/*exCellHasCheckBox*/,COMVariant::createFromBoolean(true));
		var_Column1 = COM::createFromVariant(com_Columns.Add("Amount")); com_Column1 = var_Column1;
			com_Column1.Def(20/*exTotalColumn*/,"sum(current,rec,%1)");
			com_Column1.FormatColumn("currency(value)");
	var_Items = exgrid1.Items(); com_Items = var_Items;
		com_Items.LockedItemCount(0/*exTop*/,1);
		h = com_Items.LockedItem(0/*exTop*/,0);
		com_Items.CellValue(h,COMVariant::createFromInt(0),"All");
		com_Items.CellValue(h,COMVariant::createFromInt(1),"sum(all,rec,%1)");
		com_Items.CellValueFormat(h,COMVariant::createFromInt(1),4/*exTotalField*/);
		r = com_Items.AddItem("Root 1");
		g1 = com_Items.InsertItem(r,,"Group A");
		com_Items.CellValue(com_Items.InsertItem(g1,,"Item 1"),COMVariant::createFromInt(1),COMVariant::createFromInt(1));
		com_Items.CellValue(com_Items.InsertItem(g1,,"Item 2"),COMVariant::createFromInt(1),COMVariant::createFromInt(2));
		com_Items.CellState(com_Items.ItemByIndex(3),COMVariant::createFromInt(0),1);
		g2 = com_Items.InsertItem(r,,"Group B");
		com_Items.CellValue(com_Items.InsertItem(g2,,"Item 3"),COMVariant::createFromInt(1),COMVariant::createFromInt(3));
		com_Items.CellValue(com_Items.InsertItem(g2,,"Item 4"),COMVariant::createFromInt(1),COMVariant::createFromInt(4));
		com_Items.ExpandItem(g1,true);
		com_Items.ExpandItem(r,true);
		h = com_Items.AddItem("divider");
		com_Items.ItemDivider(h,0);
		com_Items.SelectableItem(h,false);
		com_Items.SortableItem(h,false);
		com_Items.ItemHeight(h,1);
		r = com_Items.AddItem("Root 2");
		g1 = com_Items.InsertItem(r,,"Group C");
		com_Items.CellValue(com_Items.InsertItem(g1,,"Item 5"),COMVariant::createFromInt(1),COMVariant::createFromInt(5));
		com_Items.CellValue(com_Items.InsertItem(g1,,"Item 6"),COMVariant::createFromInt(1),COMVariant::createFromInt(6));
		com_Items.SelectItem(com_Items.ItemByIndex(2),true);
	exgrid1.EndUpdate();
	print( exgrid1.Export("","all") );
}
1234
Bolds only the expanded items

public void init()
{
	COM com_ConditionalFormat,com_Items;
	anytype var_ConditionalFormat,var_Items;
	int h;
	;

	super();

	exgrid1.BeginUpdate();
	exgrid1.HeaderAppearance(4/*Etched*/);
	exgrid1.HeaderHeight(24);
	exgrid1.LinesAtRoot(-1/*exLinesAtRoot*/);
	var_ConditionalFormat = COM::createFromObject(exgrid1.ConditionalFormats()).Add("%CX0"); com_ConditionalFormat = var_ConditionalFormat;
	com_ConditionalFormat.Bold(true);
	exgrid1.Columns().Add("Description");
	var_Items = exgrid1.Items(); com_Items = var_Items;
		h = com_Items.AddItem("Root 1");
		com_Items.InsertItem(h,,"Child 1");
		com_Items.InsertItem(com_Items.InsertItem(h,,"Child 2"),,"Sub-Child 2");
		com_Items.CellState(com_Items.InsertItem(h,,"Child 3"),COMVariant::createFromInt(0),1);
		com_Items.ExpandItem(h,true);
		h = com_Items.AddItem("Root 2");
		com_Items.InsertItem(h,,"Child 1");
		com_Items.InsertItem(h,,"Child 2");
		com_Items.InsertItem(h,,"Child 3");
	exgrid1.EndUpdate();
}
1233
Displays the root item's index and value/caption using expressions

public void init()
{
	COM com_Column,com_Column1,com_Column2,com_Column3,com_ConditionalFormat,com_Items;
	anytype var_Column,var_Column1,var_Column2,var_Column3,var_ConditionalFormat,var_Items;
	int h;
	;

	super();

	exgrid1.BeginUpdate();
	exgrid1.HeaderAppearance(4/*Etched*/);
	exgrid1.HeaderHeight(24);
	exgrid1.LinesAtRoot(-1/*exLinesAtRoot*/);
	exgrid1.AutoDrag(3/*exAutoDragPositionAny*/);
	exgrid1.AllowCopyPaste(7/*exAllowPaste | exAllowCut | exAllowCopy*/);
	exgrid1.SingleSel(false);
	exgrid1.DrawGridLines(-2/*exRowLines*/);
	exgrid1.GridLineStyle(48/*exGridLinesSolid*/);
	exgrid1.GridLineColor(WinApi::RGB2int(208,208,208));
	var_ConditionalFormat = COM::createFromObject(exgrid1.ConditionalFormats()).Add("%CC0 and %CX0"); com_ConditionalFormat = var_ConditionalFormat;
	com_ConditionalFormat.Bold(true);
	var_ConditionalFormat = COM::createFromObject(exgrid1.ConditionalFormats()).Add("1"); com_ConditionalFormat = var_ConditionalFormat;
		com_ConditionalFormat.Bold(true);
		com_ConditionalFormat.ApplyTo(2);
	var_Column = COM::createFromVariant(exgrid1.Columns().Add("Description")); com_Column = var_Column;
		com_Column.Def(0/*exCellHasCheckBox*/,COMVariant::createFromBoolean(true));
		com_Column.PartialCheck(true);
	var_Column1 = COM::createFromVariant(exgrid1.Columns().Add("Index")); com_Column1 = var_Column1;
		com_Column1.FormatColumn("1 index ``");
		com_Column1.Position(0);
		com_Column1.Width(16);
	var_Column2 = COM::createFromVariant(exgrid1.Columns().Add("Root-Index")); com_Column2 = var_Column2;
		com_Column2.FormatColumn("root(1 index ``)");
		com_Column2.Position(1);
		com_Column2.Width(32);
		com_Column2.Def(4/*exCellBackColor*/,COMVariant::createFromInt(15790320));
	var_Column3 = COM::createFromVariant(exgrid1.Columns().Add("Root-Value")); com_Column3 = var_Column3;
		com_Column3.FormatColumn("root(%0)");
		com_Column3.Position(2);
		com_Column3.Width(32);
		com_Column3.Def(4/*exCellBackColor*/,COMVariant::createFromInt(15790320));
	var_Items = exgrid1.Items(); com_Items = var_Items;
		h = com_Items.AddItem("Root 1");
		com_Items.InsertItem(h,,"Child 1");
		com_Items.InsertItem(com_Items.InsertItem(h,,"Child 2"),,"Sub-Child 2");
		com_Items.CellState(com_Items.InsertItem(h,,"Child 3"),COMVariant::createFromInt(0),1);
		com_Items.ExpandItem(h,true);
		h = com_Items.AddItem("Root 2");
		com_Items.InsertItem(h,,"Child 1");
		com_Items.InsertItem(h,,"Child 2");
		com_Items.InsertItem(h,,"Child 3");
		com_Items.ExpandItem(h,true);
	exgrid1.EndUpdate();
}
1232
Displays the parent item's index and caption/value using expressions

public void init()
{
	COM com_Column,com_Column1,com_Column2,com_Column3,com_ConditionalFormat,com_Items;
	anytype var_Column,var_Column1,var_Column2,var_Column3,var_ConditionalFormat,var_Items;
	int h;
	;

	super();

	exgrid1.BeginUpdate();
	exgrid1.HeaderAppearance(4/*Etched*/);
	exgrid1.HeaderHeight(24);
	exgrid1.LinesAtRoot(-1/*exLinesAtRoot*/);
	exgrid1.AutoDrag(3/*exAutoDragPositionAny*/);
	exgrid1.AllowCopyPaste(7/*exAllowPaste | exAllowCut | exAllowCopy*/);
	exgrid1.SingleSel(false);
	exgrid1.DrawGridLines(-2/*exRowLines*/);
	exgrid1.GridLineStyle(48/*exGridLinesSolid*/);
	exgrid1.GridLineColor(WinApi::RGB2int(208,208,208));
	var_ConditionalFormat = COM::createFromObject(exgrid1.ConditionalFormats()).Add("%CC0 and %CX0"); com_ConditionalFormat = var_ConditionalFormat;
	com_ConditionalFormat.Bold(true);
	var_ConditionalFormat = COM::createFromObject(exgrid1.ConditionalFormats()).Add("1"); com_ConditionalFormat = var_ConditionalFormat;
		com_ConditionalFormat.Bold(true);
		com_ConditionalFormat.ApplyTo(2);
	var_Column = COM::createFromVariant(exgrid1.Columns().Add("Description")); com_Column = var_Column;
		com_Column.Def(0/*exCellHasCheckBox*/,COMVariant::createFromBoolean(true));
		com_Column.PartialCheck(true);
	var_Column1 = COM::createFromVariant(exgrid1.Columns().Add("Index")); com_Column1 = var_Column1;
		com_Column1.FormatColumn("1 index `I`");
		com_Column1.Position(0);
		com_Column1.Width(16);
	var_Column2 = COM::createFromVariant(exgrid1.Columns().Add("Parent-Index")); com_Column2 = var_Column2;
		com_Column2.FormatColumn("parent(1 index `I`)");
		com_Column2.Position(1);
		com_Column2.Width(32);
		com_Column2.Def(4/*exCellBackColor*/,COMVariant::createFromInt(15790320));
	var_Column3 = COM::createFromVariant(exgrid1.Columns().Add("Parent-Value")); com_Column3 = var_Column3;
		com_Column3.FormatColumn("parent(%0)");
		com_Column3.Position(2);
		com_Column3.Width(32);
		com_Column3.Def(4/*exCellBackColor*/,COMVariant::createFromInt(15790320));
	var_Items = exgrid1.Items(); com_Items = var_Items;
		h = com_Items.AddItem("Root 1");
		com_Items.InsertItem(h,,"Child 1");
		com_Items.InsertItem(com_Items.InsertItem(h,,"Child 2"),,"Sub-Child 2");
		com_Items.CellState(com_Items.InsertItem(h,,"Child 3"),COMVariant::createFromInt(0),1);
		com_Items.ExpandItem(h,true);
		h = com_Items.AddItem("Root 2");
		com_Items.InsertItem(h,,"Child 1");
		com_Items.InsertItem(h,,"Child 2");
		com_Items.InsertItem(h,,"Child 3");
		com_Items.ExpandItem(h,true);
	exgrid1.EndUpdate();
}
1231
Copying and Pasting the Selection Programmatically
public void init()
{
	COM com_Items;
	anytype var_Items;
	;

	super();

	exgrid1.BeginUpdate();
	exgrid1.Columns().Add("Tasks");
	exgrid1.LinesAtRoot(-1/*exLinesAtRoot*/);
	exgrid1.SingleSel(false);
	var_Items = exgrid1.Items(); com_Items = var_Items;
		com_Items.AddItem("Tasks");
		com_Items.SelectItem(com_Items.AddItem("Task 1"),true);
		com_Items.SelectItem(com_Items.AddItem("Task 2"),true);
	exgrid1.IndentSelection(COMVariant::createFromBoolean(false));
	exgrid1.CopySelection();
	exgrid1.Items().UnselectAll();
	exgrid1.Paste();
	exgrid1.EndUpdate();
}
1230
Enable Copy, Cut and Paste Clipboard operations
public void init()
{
	COM com_Items;
	anytype var_Items;
	;

	super();

	exgrid1.BeginUpdate();
	exgrid1.Columns().Add("Tasks");
	exgrid1.LinesAtRoot(-1/*exLinesAtRoot*/);
	exgrid1.AllowCopyPaste(7/*exAllowPaste | exAllowCut | exAllowCopy*/);
	exgrid1.SingleSel(false);
	var_Items = exgrid1.Items(); com_Items = var_Items;
		com_Items.AddItem("Tasks");
		com_Items.SelectItem(com_Items.AddItem("Task 1"),true);
		com_Items.SelectItem(com_Items.AddItem("Task 2"),true);
	exgrid1.IndentSelection(COMVariant::createFromBoolean(false));
	exgrid1.EndUpdate();
}
1229
Adjusts the hierarchy of selected items by changing their parent

public void init()
{
	COM com_Items;
	anytype var_Items;
	;

	super();

	exgrid1.BeginUpdate();
	exgrid1.Columns().Add("Tasks");
	exgrid1.LinesAtRoot(-1/*exLinesAtRoot*/);
	exgrid1.SingleSel(false);
	var_Items = exgrid1.Items(); com_Items = var_Items;
		com_Items.AddItem("Tasks");
		com_Items.SelectItem(com_Items.AddItem("Task A"),true);
		com_Items.SelectItem(com_Items.AddItem("Task B"),true);
	exgrid1.IndentSelection(COMVariant::createFromBoolean(false));
	exgrid1.EndUpdate();
}
1228
Specify the size of the Columns panel

public void init()
{
	COM com_Columns;
	anytype var_Columns;
	;

	super();

	exgrid1.BeginUpdate();
	exgrid1.HeaderHeight(24);
	exgrid1.HeaderAppearance(4/*Etched*/);
	var_Columns = exgrid1.Columns(); com_Columns = var_Columns;
		com_Columns.Add("City");
		COM::createFromVariant(com_Columns.Add("Start")).Visible(false);
		COM::createFromVariant(com_Columns.Add("End")).Visible(false);
	exgrid1.ColumnsFloatBarRect(",,96");
	exgrid1.ColumnsFloatBarVisible(34/*exColumnsFloatBarVisibleAsChild | exColumnsFloatBarVisibleIncludeCheckColumns*/);
	exgrid1.EndUpdate();
}
1227
Show a vertical line between pivot and Columns panel (EBN color)

public void init()
{
	COM com_Columns;
	anytype var_Columns;
	str var_s;
	;

	super();

	exgrid1.BeginUpdate();
	var_s = "gBFLBCJwBAEHhEJAAEhABRsIQAAYAQGKIYBkAKBQAGaAoDDUNQxQwAAxwfBMKgBBCLIxhEYobgmGIXRpFICQTIcBhaGIZRiAKCRTDmHwyRCNIwCLD8QxtDqBY4gOZZXh";
	var_s = var_s + "al4cJTgMaBYi+Pw3DZHcbvBRkewzHQAKgnSjoDhEMg1CTVVYTDKdOSzDyEX7sIAACpOIZQVJVEY1VT8cyxIyEZimSypWqiYJ0Ty6cQwTAIgI";
	exgrid1.VisualAppearance().Add(1,COMVariant::createFromStr(var_s));
	exgrid1.Background(87/*exColumnsFloatBackColor*/,0x1000000);
	exgrid1.HeaderHeight(24);
	exgrid1.HeaderAppearance(4/*Etched*/);
	var_Columns = exgrid1.Columns(); com_Columns = var_Columns;
		com_Columns.Add("City");
		COM::createFromVariant(com_Columns.Add("Start")).Visible(false);
		COM::createFromVariant(com_Columns.Add("End")).Visible(false);
	exgrid1.ColumnsFloatBarVisible(34/*exColumnsFloatBarVisibleAsChild | exColumnsFloatBarVisibleIncludeCheckColumns*/);
	exgrid1.EndUpdate();
}
1226
Change the background of the Columns panel (EBN color)

public void init()
{
	COM com_Columns;
	anytype var_Columns;
	str var_s;
	;

	super();

	exgrid1.BeginUpdate();
	var_s = "gBFLBCJwBAEHhEJAAEhABNoCg6AADACAxRDAMgBQKAAzQFAYahqGKGAAGOD4JhUAIIRZGMIjFDcEwxC6NIpAWLoJDCH4mSTHYxgJIMWwzDiBZgkCA4fiGEYnThCIxzTJ";
	var_s = var_s + "0aw1CKbYRAKCUKoUAJFsSnQAJIgOO4lULPMIhDDQKQTIKBahoehqIhaEQyDSJNb2DCIahhMSEbKtCooDhGFZUWzLVxTJJNawHJqJJDuOTpSjKH4+RjWFKUXR9b4BJSNA";
	var_s = var_s + "gqeCQTiSWZEVxRUS0XbGCyZLSQY7uAAMKgOVoDYzdGLwHTtOwrMa1QAsDSbKqWZ5uRpHcQ5aAGN5DPbMbqwOaqLznAaLQLtG4RTikVRPTDYaj437+OaHGyNbI6HTNPpT";
	var_s = var_s + "lWDJWjYXI8l8C4fg6GYAAEEISgGJJGHQOocgyIwYnqKhYAAIQTH2MYRjQJBRAmZptmEAYIjGU5dk8UgOFgBJUgCTQIBYBoBmCCAmAqApghgDJUDmYQFCCZoEk2OBUm+B";
	var_s = var_s + "ZPCgZgagaYZIHYHoHmGWBcm8NwiEiFJVgmYgji4Kg6GKSI2C6C5jAiRgygwIojiycINkyeJmAYPJjkiTg+g+ZAIkCdIQkyWQWDuDxkBkJhKguZAzlIRQzGQc5ODWFJlE";
	var_s = var_s + "kVhWhWZYJFYTYTmUE4yF6F5mAmBhihiZhJhYX4WmQaAUnWGpOlmNhuhuZwJkYcocmcSY4naHZlkmKhrDuJ5JnYfofmgCgGgKIJnlmXJ2h4TQKBosRokoNoOiOaQKDSd4";
	var_s = var_s + "kmiChMncPBpgoZoaiaaZKHaHonmmE5iiKJRpDicomimaoKiaKoqmqSoeiIPgogqPotiyaxKlYPA+GuCqbBMa5KnaPovmwCwGj6LgP24RIhiyCwmkqMpsksNpKD6LQLBq";
	var_s = var_s + "OIzi0SxWlaHZtAOahPssM5Wi+IYtlsXpijKbZ5lyTo5mAE4UlqOpjHOQpEjubyanKPJvEuNgVj2TY1CCao+k2G52AyP5wAwBp9DYZZ1CCaxsAABAEICA";
	exgrid1.VisualAppearance().Add(1,COMVariant::createFromStr(var_s));
	exgrid1.Background(87/*exColumnsFloatBackColor*/,0x1000000);
	exgrid1.HeaderHeight(24);
	exgrid1.HeaderAppearance(4/*Etched*/);
	var_Columns = exgrid1.Columns(); com_Columns = var_Columns;
		com_Columns.Add("City");
		COM::createFromVariant(com_Columns.Add("Start")).Visible(false);
		COM::createFromVariant(com_Columns.Add("End")).Visible(false);
	exgrid1.ColumnsFloatBarVisible(34/*exColumnsFloatBarVisibleAsChild | exColumnsFloatBarVisibleIncludeCheckColumns*/);
	exgrid1.EndUpdate();
}
1225
Change the background of the Columns panel (solid color)

public void init()
{
	COM com_Columns;
	anytype var_Columns;
	;

	super();

	exgrid1.BeginUpdate();
	exgrid1.HeaderHeight(24);
	exgrid1.HeaderAppearance(4/*Etched*/);
	var_Columns = exgrid1.Columns(); com_Columns = var_Columns;
		com_Columns.Add("City");
		COM::createFromVariant(com_Columns.Add("Start")).Visible(false);
		COM::createFromVariant(com_Columns.Add("End")).Visible(false);
	exgrid1.ColumnsFloatBarVisible(34/*exColumnsFloatBarVisibleAsChild | exColumnsFloatBarVisibleIncludeCheckColumns*/);
	exgrid1.Background(87/*exColumnsFloatBackColor*/,WinApi::RGB2int(240,240,240));
	exgrid1.EndUpdate();
}
1224
Change the visual appearance of the Columns panel

public void init()
{
	COM com_Columns;
	anytype var_Columns;
	str var_s;
	;

	super();

	exgrid1.BeginUpdate();
	var_s = "gBFLBCJwBAEHhEJAAEhABNoCg6AADACAxRDAMgBQKAAzQFAYahqGKGAAGOD4JhUAIIRZGMIjFDcEwxC6NIpAWLoJDCH4mSTHYxgJIMWwzDiBZgkCA4fiGEYnThCIxzTJ";
	var_s = var_s + "0aw1CKbYRAKCUKoUAJFsSnQAJIgOO4lULPMIhDDQKQTIKBahoehqIhaEQyDSJNb2DCIahhMSEbKtCooDhGFZUWzLVxTJJNawHJqJJDuOTpSjKH4+RjWFKUXR9b4BJSNA";
	var_s = var_s + "gqeCQTiSWZEVxRUS0XbGCyZLSQY7uAAMKgOVoDYzdGLwHTtOwrMa1QAsDSbKqWZ5uRpHcQ5aAGN5DPbMbqwOaqLznAaLQLtG4RTikVRPTDYaj437+OaHGyNbI6HTNPpT";
	var_s = var_s + "lWDJWjYXI8l8C4fg6GYAAEEISgGJJGHQOocgyIwYnqKhYAAIQTH2MYRjQJBRAmZptmEAYIjGU5dk8UgOFgBJUgCTQIBYBoBmCCAmAqApghgDJUDmYQFCCZoEk2OBUm+B";
	var_s = var_s + "ZPCgZgagaYZIHYHoHmGWBcm8NwiEiFJVgmYgji4Kg6GKSI2C6C5jAiRgygwIojiycINkyeJmAYPJjkiTg+g+ZAIkCdIQkyWQWDuDxkBkJhKguZAzlIRQzGQc5ODWFJlE";
	var_s = var_s + "kVhWhWZYJFYTYTmUE4yF6F5mAmBhihiZhJhYX4WmQaAUnWGpOlmNhuhuZwJkYcocmcSY4naHZlkmKhrDuJ5JnYfofmgCgGgKIJnlmXJ2h4TQKBosRokoNoOiOaQKDSd4";
	var_s = var_s + "kmiChMncPBpgoZoaiaaZKHaHonmmE5iiKJRpDicomimaoKiaKoqmqSoeiIPgogqPotiyaxKlYPA+GuCqbBMa5KnaPovmwCwGj6LgP24RIhiyCwmkqMpsksNpKD6LQLBq";
	var_s = var_s + "OIzi0SxWlaHZtAOahPssM5Wi+IYtlsXpijKbZ5lyTo5mAE4UlqOpjHOQpEjubyanKPJvEuNgVj2TY1CCao+k2G52AyP5wAwBp9DYZZ1CCaxsAABAEICA";
	exgrid1.VisualAppearance().Add(1,COMVariant::createFromStr(var_s));
	exgrid1.Background(92/*exColumnsFloatAppearance*/,0x1000000);
	exgrid1.Background(93/*exColumnsFloatCaptionBackColor*/,WinApi::RGB2int(246,246,246));
	exgrid1.BackColorHeader(0x1000000);
	exgrid1.HeaderHeight(24);
	exgrid1.HeaderAppearance(4/*Etched*/);
	var_Columns = exgrid1.Columns(); com_Columns = var_Columns;
		com_Columns.Add("City");
		COM::createFromVariant(com_Columns.Add("Start")).Visible(false);
		COM::createFromVariant(com_Columns.Add("End")).Visible(false);
	exgrid1.Description(26/*exColumnsFloatBar*/,"Show/Hide");
	exgrid1.ColumnsFloatBarVisible(2/*exColumnsFloatBarVisibleIncludeCheckColumns*/);
	exgrid1.EndUpdate();
}
1223
Defines the symbol used to indicate repeated captions, providing a clear visual cue for identical entries (ditto mark)

public void init()
{
	COM com_Items;
	anytype var_Items;
	;

	super();

	exgrid1.BeginUpdate();
	exgrid1.HeaderAppearance(4/*Etched*/);
	exgrid1.HeaderHeight(24);
	exgrid1.DrawGridLines(-2/*exRowLines*/);
	COM::createFromVariant(exgrid1.Columns().Add("Country")).ShowIdem("<fgcolor gray>〃");
	var_Items = exgrid1.Items(); com_Items = var_Items;
		com_Items.AddItem("Spain");
		com_Items.AddItem("Spain");
		com_Items.AddItem("Spain");
		com_Items.AddItem("Spain");
		com_Items.AddItem("Germany");
		com_Items.AddItem("Germany");
		com_Items.AddItem("Germany");
		com_Items.AddItem("Germany");
	exgrid1.EndUpdate();
}
1222
Defines the symbol used to indicate repeated captions, providing a clear visual cue for identical entries (space)

public void init()
{
	COM com_Items;
	anytype var_Items;
	;

	super();

	exgrid1.BeginUpdate();
	exgrid1.HeaderAppearance(4/*Etched*/);
	exgrid1.HeaderHeight(24);
	exgrid1.DrawGridLines(-2/*exRowLines*/);
	COM::createFromVariant(exgrid1.Columns().Add("Country")).ShowIdem(" ");
	var_Items = exgrid1.Items(); com_Items = var_Items;
		com_Items.AddItem("Spain");
		com_Items.AddItem("Spain");
		com_Items.AddItem("Spain");
		com_Items.AddItem("Spain");
		com_Items.AddItem("Germany");
		com_Items.AddItem("Germany");
		com_Items.AddItem("Germany");
		com_Items.AddItem("Germany");
	exgrid1.EndUpdate();
}
1221
Displays a glitch funnel for drop-down filter buttons (empty or active)

public void init()
{
	COM com_Appearance,com_Column,com_Items;
	anytype var_Appearance,var_Column,var_Items;
	str var_s;
	;

	super();

	exgrid1.BeginUpdate();
	var_Appearance = exgrid1.VisualAppearance(); com_Appearance = var_Appearance;
		com_Appearance.RenderType(-1);
		var_s = "gBFLBCJwBAEHhEJAAEhABa8IQAAYAQGKIYBkAKBQAGaAoDDUNQxQwAAxwfBMKgBBCLIxhEYobgmGIXRpFMbxCKQahLEiTIhGUYJHgmK4tRiAUgxVDkBxrECZYqjcBZOi";
		var_s = var_s + "wLQ2TxDM7DNKUCBnIoABhGOaYDh+IQNQjUFKwTRFGRxK4EIRKAyTDLQdRyGSMMbjdQpBCbMiMRqhESKRq2UwYRYCFS1NalaztO6BUAvK67YrWez/YBfF+SfwGeqDYReW";
		var_s = var_s + "APfgWERnQrGMLxbD8KwZAKTRjkGJ4XhuB41TbQMqufL9ByXHKSSDpGjaXjeO5VVjYNAvS69UzXNq3bhtQAOXCMEwCgI=";
		com_Appearance.Add(1,COMVariant::createFromStr(var_s));
		com_Appearance.Add(2,"CP:1 -2 0 0 0");
	exgrid1.DrawGridLines(-1/*exAllLines*/);
	exgrid1.GridLineStyle(512/*exGridLinesGeometric*/);
	exgrid1.ShowFocusRect(false);
	exgrid1.Background(0/*exHeaderFilterBarButton*/,0x2000000);
	exgrid1.Background(41/*exHeaderFilterBarActive*/,0x2000001);
	exgrid1.HeaderAppearance(4/*Etched*/);
	exgrid1.BackColorHeader(WinApi::RGB2int(255,255,255));
	exgrid1.HeaderHeight(24);
	exgrid1.HeaderVisible(1);
	var_Column = COM::createFromVariant(exgrid1.Columns().Add("1st col")); com_Column = var_Column;
		com_Column.DisplayFilterButton(true);
		com_Column.DisplayFilterPattern(false);
		com_Column.Filter("Item B");
		com_Column.FilterType(240/*exFilter*/);
	exgrid1.Columns().Add("2nd col");
	var_Items = exgrid1.Items(); com_Items = var_Items;
		com_Items.AddItem("Item A");
		com_Items.AddItem("Item B");
		com_Items.AddItem("Item C");
	exgrid1.ApplyFilter();
	exgrid1.EndUpdate();
}
1220
How can I store any extra data associated with a cell
// ButtonClick event - Occurs when user clicks on the cell's button.
void onEvent_ButtonClick(int   _Item, int   _ColIndex, COMVariant   _Key)
{
	;
	print( exgrid1.Items().CellData(_Item,_ColIndex) );
}

public void init()
{
	COM com_Editor,com_Items;
	anytype var_Editor,var_Items;
	;

	super();

	exgrid1.BeginUpdate();
	exgrid1.HeaderAppearance(4/*Etched*/);
	var_Editor = COM::createFromVariant(exgrid1.Columns().Add("Def")).Editor(); com_Editor = var_Editor;
		com_Editor.EditType(12/*ButtonType*/);
		com_Editor.Locked(true);
	var_Items = exgrid1.Items(); com_Items = var_Items;
		com_Items.CellData(com_Items.AddItem("Cell 1"),COMVariant::createFromInt(0),"your extra data for cell 1");
		com_Items.CellData(com_Items.AddItem("Cell 2"),COMVariant::createFromInt(0),"your extra data for cell 2");
	exgrid1.EndUpdate();
}
1219
How can I replace or add an icon at runtime

public void init()
{
	str var_s;
	;

	super();

	exgrid1.BeginUpdate();
	var_s = "gAAAABgYACEHgUJFEEAAWhUJCEJEEJggEhMCYEXjUbjkJQECj8gj8hAEjkshYEpk8kf8ClsulsvAExmcvf83js5nU7nkCeEcn8boMaocXosCB9Hn09pkzcEuoL/fE+Ok";
	var_s = var_s + "YB0gB9YhIHrddgVcr9aktZADAD8+P8CgIA==";
	exgrid1.ReplaceIcon(COMVariant::createFromStr(var_s));
	exgrid1.ReplaceIcon("C:\\images\\favicon.ico",COMVariant::createFromInt(0));
	COM::createFromVariant(exgrid1.Columns().Add("Items")).Def(17/*exCellValueFormat*/,COMVariant::createFromInt(1));
	exgrid1.Items().AddItem("Item <img>1</img>");
	exgrid1.EndUpdate();
}
1218
How can I save the changes, such as column's width, order

// Click event - Occurs when the user presses and then releases the left mouse button over the grid control.
void onEvent_Click()
{
	;
	exgrid1.Layout("Select=\"0\";SingleSort=\"C0:2\";Columns=1");
}

public void init()
{
	COM com_Items;
	anytype var_Items;
	;

	super();

	exgrid1.BeginUpdate();
	exgrid1.Columns().Add("Column");
	var_Items = exgrid1.Items(); com_Items = var_Items;
		com_Items.AddItem("Item 1");
		com_Items.AddItem("Item 2");
		com_Items.AddItem("Item 3");
	exgrid1.EndUpdate();
}
1217
How can I add totals to groups without having to go through the AddGroupItem grid function

public void init()
{
	COM com_Column,com_Column1,com_Column2,com_Columns,com_ConditionalFormat,com_ConditionalFormat1,com_ConditionalFormat2,com_ConditionalFormats,com_Editor,com_Items;
	anytype var_Column,var_Column1,var_Column2,var_Columns,var_ConditionalFormat,var_ConditionalFormat1,var_ConditionalFormat2,var_ConditionalFormats,var_Editor,var_Items;
	int g1,g2,h,r;
	;

	super();

	exgrid1.FreezeEvents(true);
	exgrid1.BeginUpdate();
	exgrid1.HeaderAppearance(4/*Etched*/);
	exgrid1.HeaderHeight(24);
	exgrid1.LinesAtRoot(-1/*exLinesAtRoot*/);
	var_ConditionalFormats = exgrid1.ConditionalFormats(); com_ConditionalFormats = var_ConditionalFormats;
		var_ConditionalFormat = com_ConditionalFormats.Add("%CT1"); com_ConditionalFormat = var_ConditionalFormat;
			com_ConditionalFormat.ForeColor(WinApi::RGB2int(128,128,128));
			com_ConditionalFormat.ApplyTo(1);
		var_ConditionalFormat1 = com_ConditionalFormats.Add("%CT2"); com_ConditionalFormat1 = var_ConditionalFormat1;
			com_ConditionalFormat1.ForeColor(WinApi::RGB2int(128,128,128));
			com_ConditionalFormat1.ApplyTo(2);
		var_ConditionalFormat2 = com_ConditionalFormats.Add("%CT3"); com_ConditionalFormat2 = var_ConditionalFormat2;
			com_ConditionalFormat2.ForeColor(WinApi::RGB2int(128,128,128));
			com_ConditionalFormat2.ApplyTo(3);
	var_Columns = exgrid1.Columns(); com_Columns = var_Columns;
		com_Columns.Add("Description");
		var_Column = COM::createFromVariant(com_Columns.Add("Qty")); com_Column = var_Column;
			var_Editor = COM::createFromObject(com_Column.Editor()); com_Editor = var_Editor;
			com_Editor.EditType(4/*SpinType*/);
			com_Column.Def(20/*exTotalColumn*/,"sum(current,rec,%1)");
		var_Column1 = COM::createFromVariant(com_Columns.Add("Price")); com_Column1 = var_Column1;
			com_Column1.Def(20/*exTotalColumn*/,"avg(current,rec,%2)");
			var_Editor = COM::createFromObject(com_Column1.Editor()); com_Editor = var_Editor;
			com_Editor.EditType(4/*SpinType*/);
		var_Column2 = COM::createFromVariant(com_Columns.Add("Amount")); com_Column2 = var_Column2;
			com_Column2.ComputedField("%1 * %2");
			com_Column2.Def(20/*exTotalColumn*/,"sum(current,rec,%3)");
	var_Items = exgrid1.Items(); com_Items = var_Items;
		r = com_Items.AddItem("Root");
		g1 = com_Items.InsertItem(r,,"Group 1");
		h = com_Items.InsertItem(g1,,"Item 1");
		com_Items.CellValue(h,COMVariant::createFromInt(1),COMVariant::createFromInt(1));
		com_Items.CellValue(h,COMVariant::createFromInt(2),COMVariant::createFromInt(10));
		h = com_Items.InsertItem(g1,,"Item 2");
		com_Items.CellValue(h,COMVariant::createFromInt(1),COMVariant::createFromInt(2));
		com_Items.CellValue(h,COMVariant::createFromInt(2),COMVariant::createFromInt(11));
		g2 = com_Items.InsertItem(r,,"Group 2");
		h = com_Items.InsertItem(g2,,"Item 1");
		com_Items.CellValue(h,COMVariant::createFromInt(1),COMVariant::createFromInt(3));
		com_Items.CellValue(h,COMVariant::createFromInt(2),COMVariant::createFromInt(12));
		h = com_Items.InsertItem(g2,,"Item 2");
		com_Items.CellValue(h,COMVariant::createFromInt(1),COMVariant::createFromInt(4));
		com_Items.CellValue(h,COMVariant::createFromInt(2),COMVariant::createFromInt(13));
		com_Items.ExpandItem(0,true);
	exgrid1.EndUpdate();
	exgrid1.FreezeEvents(false);
}
1216
How can I configure the filters in the text columns to search by content

public void init()
{
	COM com_Items;
	anytype var_Items;
	;

	super();

	exgrid1.BeginUpdate();
	exgrid1.FilterBarPromptVisible(1/*exFilterBarPromptVisible*/);
	exgrid1.HeaderAppearance(0/*None2*/);
	exgrid1.FilterBarPromptType(1/*exFilterPromptContainsAll*/);
	exgrid1.Columns().Add("Names");
	var_Items = exgrid1.Items(); com_Items = var_Items;
		com_Items.AddItem("Mantel");
		com_Items.AddItem("Mechanik");
		com_Items.AddItem("Motor");
		com_Items.AddItem("Murks");
		com_Items.AddItem("Märchen");
		com_Items.AddItem("Möhren");
		com_Items.AddItem("Mühle");
		com_Items.AddItem("Sérigraphie");
	exgrid1.FilterBarPromptPattern("a");
	exgrid1.EndUpdate();
}
1215
How can I display the control's captions in Spanish

public void init()
{
	COM com_Column,com_Items;
	anytype var_Column,var_Items;
	;

	super();

	exgrid1.BeginUpdate();
	exgrid1.FilterBarPromptVisible(1/*exFilterBarPromptVisible*/);
	exgrid1.HeaderAppearance(0/*None2*/);
	exgrid1.Description(0/*exFilterBarAll*/,"(todo) ");
	exgrid1.Description(3/*exFilterBarFilterForCaption*/,"filtrar por...");
	exgrid1.FilterBarPrompt("<i><fgcolor=808080>iniciar filtro...</fgcolor></i>");
	var_Column = COM::createFromVariant(exgrid1.Columns().Add("Names")); com_Column = var_Column;
		com_Column.DisplayFilterButton(true);
		com_Column.FilterType(3/*exPattern*/);
	var_Items = exgrid1.Items(); com_Items = var_Items;
		com_Items.AddItem("Mantel");
		com_Items.AddItem("Mechanik");
		com_Items.AddItem("Motor");
		com_Items.AddItem("Murks");
		com_Items.AddItem("Märchen");
		com_Items.AddItem("Möhren");
		com_Items.AddItem("Mühle");
		com_Items.AddItem("Sérigraphie");
	exgrid1.EndUpdate();
}
1214
How can I zoom in the control

public void init()
{
	COM com_Column,com_Items;
	COMVariant s2;
	anytype var_Column,var_Items;
	str s1;
	;

	super();

	exgrid1.BeginUpdate();
	s1 = 16;
	s2 = exgrid1.FormatABC("2 * value",s1);
	exgrid1.ImageSize(s2);
	exgrid1.DefaultItemHeight(s2);
	exgrid1.HeaderHeight(s2);
	exgrid1.SortBarHeight(s2);
	exgrid1.Indent(s2);
	exgrid1.Font().Size(s1);
	exgrid1.FilterBarFont().Size(s1);
	exgrid1.ToolTipFont().Size(s1);
	exgrid1.FilterBarPromptVisible(1/*exFilterBarPromptVisible*/);
	exgrid1.HeaderAppearance(0/*None2*/);
	var_Column = COM::createFromVariant(exgrid1.Columns().Add("Names")); com_Column = var_Column;
		com_Column.DisplayFilterButton(true);
		com_Column.FilterType(3/*exPattern*/);
	var_Items = exgrid1.Items(); com_Items = var_Items;
		com_Items.AddItem("Mantel");
		com_Items.AddItem("Mechanik");
		com_Items.AddItem("Motor");
		com_Items.AddItem("Murks");
		com_Items.AddItem("Märchen");
		com_Items.AddItem("Möhren");
		com_Items.AddItem("Mühle");
		com_Items.AddItem("Sérigraphie");
	exgrid1.EndUpdate();
}
1213
Can I set a filter that automatically adds a * before and after the word, so the user can just search for 'cat' and it becomes '*cat*' automatically

public void init()
{
	COM com_Column,com_Items;
	anytype var_Column,var_Items;
	int h;
	;

	super();

	exgrid1.BeginUpdate();
	exgrid1.HeaderAppearance(4/*Etched*/);
	exgrid1.HeaderHeight(24);
	exgrid1.LinesAtRoot(-1/*exLinesAtRoot*/);
	var_Column = COM::createFromVariant(exgrid1.Columns().Add("Items")); com_Column = var_Column;
		com_Column.DisplayFilterButton(true);
		com_Column.DisplayFilterPattern(true);
		com_Column.Def(21/*exFilterPatternTemplate*/,"*<%filter%>*");
		com_Column.FilterType(3/*exPattern*/);
		com_Column.Filter("1");
	var_Items = exgrid1.Items(); com_Items = var_Items;
		h = com_Items.AddItem("Root 1");
		com_Items.InsertItem(h,,"Child 1");
		com_Items.InsertItem(h,,"Child 2");
		com_Items.ExpandItem(h,true);
		h = com_Items.AddItem("Root 2");
		com_Items.InsertItem(h,,"Child 1");
		com_Items.InsertItem(h,,"Child 2");
	exgrid1.ApplyFilter();
	exgrid1.EndUpdate();
}
1212
The fine dotted lines in the control appear much thicker than the standard ones we've been using. How can we fix this

public void init()
{
	;

	super();

	exgrid1.BeginUpdate();
	exgrid1.HeaderAppearance(4/*Etched*/);
	exgrid1.HeaderHeight(24);
	exgrid1.DrawGridLines(-1/*exAllLines*/);
	exgrid1.GridLineStyle(512/*exGridLinesGeometric*/);
	exgrid1.ColumnAutoResize(false);
	exgrid1.Columns().Add("Column 1");
	exgrid1.Columns().Add("Column 2");
	exgrid1.Columns().Add("Column 3");
	exgrid1.Columns().Add("Column 4");
	exgrid1.EndUpdate();
}
1211
Load data as a tree using a parent-id relationship

public void init()
{
	COM com_Column,com_rs;
	anytype rs,var_Column;
	;

	super();

	exgrid1.BeginUpdate();
	exgrid1.ColumnAutoResize(false);
	exgrid1.HeaderAppearance(4/*Etched*/);
	exgrid1.HeaderHeight(24);
	exgrid1.DrawGridLines(2/*exVLines*/);
	exgrid1.LinesAtRoot(-1/*exLinesAtRoot*/);
	// Add 'Microsoft ActiveX Data Objects 6.1 Library(msado15.dll)' reference to your project.
	rs = COM::createFromObject(new ADODB.Recordset()); com_rs = rs;
		rs.Open("Select * FROM Employees WHERE 1=0","Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\\Program Files\\Exontrol\\ExGrid\\Sample\\Access\\misc.mdb",3/*adOpenStatic*/,3/*adLockOptimistic*/);
	exgrid1.DataSource(rs);
	var_Column = COM::createFromObject(exgrid1.Columns()).Item(COMVariant::createFromInt(0)); com_Column = var_Column;
	com_Column.Width(128);
	rs = COM::createFromObject(new ADODB.Recordset());
		rs.Open("Employees","Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\\Program Files\\Exontrol\\ExGrid\\Sample\\Access\\misc.mdb",3/*adOpenStatic*/,3/*adLockOptimistic*/);
	exgrid1.PutItems(rs.GetRows(),";0;17");
	exgrid1.Items().ExpandItem(0,true);
	exgrid1.EndUpdate();
}
1210
Is there a way to change the contents of the drop down editor based on a value in another column

// AddItem event - Occurs after a new Item has been inserted to Items collection.
void onEvent_AddItem(int   _Item)
{
	;
	exgrid1.Items().CellEditorVisible(_Item,COMVariant::createFromInt(0),1/*exEditorVisible*/);
	exgrid1.Items().CellEditorVisible(_Item,COMVariant::createFromInt(1),1/*exEditorVisible*/);
}

// EditOpen event - Occurs when the edit operation starts.
void onEvent_EditOpen()
{
	COM com_Column,com_Editor,com_Items;
	COMVariant v;
	anytype var_Column,var_Editor,var_Items;
	str c;
	;
	var_Items = exgrid1.Items(); com_Items = var_Items;
		v = com_Items.CellValue(com_Items.FocusItem(),COMVariant::createFromInt(0));
		c = com_Items.CellCaption(com_Items.FocusItem(),COMVariant::createFromInt(0));
	var_Column = COM::createFromObject(exgrid1.Columns()).Item(COMVariant::createFromInt(1)); com_Column = var_Column;
	var_Editor = com_Column.Editor(); com_Editor = var_Editor;
		com_Editor.ClearItems();
		com_Editor.AddItem(v,c);
}

public void init()
{
	COM com_Column,com_Editor,com_Editor1,com_Items;
	COMVariant v;
	anytype var_Column,var_Editor,var_Editor1,var_Items;
	int h;
	str c,var_s;
	;

	super();

	exgrid1.BeginUpdate();
	exgrid1.HeaderAppearance(4/*Etched*/);
	exgrid1.HeaderHeight(24);
	exgrid1.GridLineStyle(512/*exGridLinesGeometric*/);
	var_Column = COM::createFromVariant(exgrid1.Columns().Add("DropDownList")); com_Column = var_Column;
		var_Editor = com_Column.Editor(); com_Editor = var_Editor;
			com_Editor.EditType(3/*DropDownListType*/);
			com_Editor.AddItem(1,"First");
			com_Editor.AddItem(2,"Second");
			com_Editor.AddItem(3,"Third");
	exgrid1.DrawGridLines(-1/*exAllLines*/);
	var_Editor1 = COM::createFromObject(COM::createFromVariant(exgrid1.Columns().Add("DropDownList-Related"))).Editor(); com_Editor1 = var_Editor1;
	com_Editor1.EditType(3/*DropDownListType*/);
	var_Items = exgrid1.Items(); com_Items = var_Items;
		com_Items.CellValue(com_Items.AddItem(COMVariant::createFromInt(1)),COMVariant::createFromInt(1),COMVariant::createFromInt(-1));
		com_Items.CellValue(com_Items.AddItem(COMVariant::createFromInt(2)),COMVariant::createFromInt(1),COMVariant::createFromInt(-1));
		com_Items.CellValue(com_Items.AddItem(COMVariant::createFromInt(3)),COMVariant::createFromInt(1),COMVariant::createFromInt(-1));
		com_Items.LockedItemCount(2/*exBottom*/,1);
		h = com_Items.LockedItem(2/*exBottom*/,0);
		com_Items.ItemDivider(h,0);
		com_Items.ItemDividerLineAlignment(h,2/*DividerTop*/);
		com_Items.CellEditorVisible(h,COMVariant::createFromInt(0),false);
		com_Items.CellSingleLine(h,COMVariant::createFromInt(0),false);
		com_Items.CellValueFormat(h,COMVariant::createFromInt(0),1/*exHTML*/);
		var_s = "The drop down editor in the second column is filled during the <b>EditOpen event</b>, and the values are based on the selection ";
		var_s = var_s + "on the first column.";
		com_Items.CellValue(h,COMVariant::createFromInt(0),COMVariant::createFromStr(var_s));
	exgrid1.EndUpdate();
}
1209
Highlight the editable fields

// Change event - Occurs when the user changes the cell's content.
void onEvent_Change(int   _Item, int   _ColIndex, COMVariant /*variant*/   _NewValue)
{
	;
	exgrid1.Refresh();
}

public void init()
{
	COM com_Column,com_Column1,com_Column2,com_Columns,com_ConditionalFormat,com_ConditionalFormat1,com_ConditionalFormat2,com_ConditionalFormats,com_Editor,com_Items;
	anytype var_Column,var_Column1,var_Column2,var_Columns,var_ConditionalFormat,var_ConditionalFormat1,var_ConditionalFormat2,var_ConditionalFormats,var_Editor,var_Items;
	int g1,g2,h,r;
	;

	super();

	exgrid1.FreezeEvents(true);
	exgrid1.BeginUpdate();
	exgrid1.HeaderAppearance(4/*Etched*/);
	exgrid1.HeaderHeight(24);
	exgrid1.LinesAtRoot(-1/*exLinesAtRoot*/);
	var_ConditionalFormats = exgrid1.ConditionalFormats(); com_ConditionalFormats = var_ConditionalFormats;
		var_ConditionalFormat = com_ConditionalFormats.Add("%CE1"); com_ConditionalFormat = var_ConditionalFormat;
			com_ConditionalFormat.Bold(true);
			com_ConditionalFormat.BackColor(WinApi::RGB2int(245,245,245));
			com_ConditionalFormat.ApplyTo(1);
		var_ConditionalFormat1 = com_ConditionalFormats.Add("%CE2"); com_ConditionalFormat1 = var_ConditionalFormat1;
			com_ConditionalFormat1.Bold(true);
			com_ConditionalFormat1.BackColor(WinApi::RGB2int(245,245,245));
			com_ConditionalFormat1.ApplyTo(2);
		var_ConditionalFormat2 = com_ConditionalFormats.Add("%CE3"); com_ConditionalFormat2 = var_ConditionalFormat2;
			com_ConditionalFormat2.Bold(true);
			com_ConditionalFormat2.BackColor(WinApi::RGB2int(245,245,245));
			com_ConditionalFormat2.ApplyTo(3);
	var_Columns = exgrid1.Columns(); com_Columns = var_Columns;
		com_Columns.Add("Description");
		var_Column = COM::createFromVariant(com_Columns.Add("Qty")); com_Column = var_Column;
			var_Editor = COM::createFromObject(com_Column.Editor()); com_Editor = var_Editor;
			com_Editor.EditType(4/*SpinType*/);
			com_Column.Def(20/*exTotalColumn*/,"sum(current,rec,%1)");
		var_Column1 = COM::createFromVariant(com_Columns.Add("Price")); com_Column1 = var_Column1;
			com_Column1.Def(20/*exTotalColumn*/,"avg(current,rec,%2)");
			var_Editor = COM::createFromObject(com_Column1.Editor()); com_Editor = var_Editor;
			com_Editor.EditType(4/*SpinType*/);
		var_Column2 = COM::createFromVariant(com_Columns.Add("Amount")); com_Column2 = var_Column2;
			com_Column2.ComputedField("%1 * %2");
			com_Column2.Def(20/*exTotalColumn*/,"sum(current,rec,%3)");
	var_Items = exgrid1.Items(); com_Items = var_Items;
		r = com_Items.AddItem("Root");
		g1 = com_Items.InsertItem(r,,"Group 1");
		h = com_Items.InsertItem(g1,,"Item 1");
		com_Items.CellValue(h,COMVariant::createFromInt(1),COMVariant::createFromInt(1));
		com_Items.CellValue(h,COMVariant::createFromInt(2),COMVariant::createFromInt(10));
		h = com_Items.InsertItem(g1,,"Item 2");
		com_Items.CellValue(h,COMVariant::createFromInt(1),COMVariant::createFromInt(2));
		com_Items.CellValue(h,COMVariant::createFromInt(2),COMVariant::createFromInt(11));
		g2 = com_Items.InsertItem(r,,"Group 2");
		h = com_Items.InsertItem(g2,,"Item 1");
		com_Items.CellValue(h,COMVariant::createFromInt(1),COMVariant::createFromInt(3));
		com_Items.CellValue(h,COMVariant::createFromInt(2),COMVariant::createFromInt(12));
		h = com_Items.InsertItem(g2,,"Item 2");
		com_Items.CellValue(h,COMVariant::createFromInt(1),COMVariant::createFromInt(4));
		com_Items.CellValue(h,COMVariant::createFromInt(2),COMVariant::createFromInt(13));
		com_Items.ExpandItem(0,true);
	exgrid1.EndUpdate();
	exgrid1.FreezeEvents(false);
}
1208
Highlight the total fields

// Change event - Occurs when the user changes the cell's content.
void onEvent_Change(int   _Item, int   _ColIndex, COMVariant /*variant*/   _NewValue)
{
	;
	exgrid1.Refresh();
}

public void init()
{
	COM com_Column,com_Column1,com_Column2,com_Columns,com_ConditionalFormat,com_ConditionalFormat1,com_ConditionalFormat2,com_ConditionalFormats,com_Editor,com_Items;
	anytype var_Column,var_Column1,var_Column2,var_Columns,var_ConditionalFormat,var_ConditionalFormat1,var_ConditionalFormat2,var_ConditionalFormats,var_Editor,var_Items;
	int g1,g2,h,r;
	;

	super();

	exgrid1.FreezeEvents(true);
	exgrid1.BeginUpdate();
	exgrid1.HeaderAppearance(4/*Etched*/);
	exgrid1.HeaderHeight(24);
	exgrid1.LinesAtRoot(-1/*exLinesAtRoot*/);
	var_ConditionalFormats = exgrid1.ConditionalFormats(); com_ConditionalFormats = var_ConditionalFormats;
		var_ConditionalFormat = com_ConditionalFormats.Add("%CT1"); com_ConditionalFormat = var_ConditionalFormat;
			com_ConditionalFormat.ForeColor(WinApi::RGB2int(128,128,128));
			com_ConditionalFormat.ApplyTo(1);
		var_ConditionalFormat1 = com_ConditionalFormats.Add("%CT2"); com_ConditionalFormat1 = var_ConditionalFormat1;
			com_ConditionalFormat1.ForeColor(WinApi::RGB2int(128,128,128));
			com_ConditionalFormat1.ApplyTo(2);
		var_ConditionalFormat2 = com_ConditionalFormats.Add("%CT3"); com_ConditionalFormat2 = var_ConditionalFormat2;
			com_ConditionalFormat2.ForeColor(WinApi::RGB2int(128,128,128));
			com_ConditionalFormat2.ApplyTo(3);
	var_Columns = exgrid1.Columns(); com_Columns = var_Columns;
		com_Columns.Add("Description");
		var_Column = COM::createFromVariant(com_Columns.Add("Qty")); com_Column = var_Column;
			var_Editor = COM::createFromObject(com_Column.Editor()); com_Editor = var_Editor;
			com_Editor.EditType(4/*SpinType*/);
			com_Column.Def(20/*exTotalColumn*/,"sum(current,rec,%1)");
		var_Column1 = COM::createFromVariant(com_Columns.Add("Price")); com_Column1 = var_Column1;
			com_Column1.Def(20/*exTotalColumn*/,"avg(current,rec,%2)");
			var_Editor = COM::createFromObject(com_Column1.Editor()); com_Editor = var_Editor;
			com_Editor.EditType(4/*SpinType*/);
		var_Column2 = COM::createFromVariant(com_Columns.Add("Amount")); com_Column2 = var_Column2;
			com_Column2.ComputedField("%1 * %2");
			com_Column2.Def(20/*exTotalColumn*/,"sum(current,rec,%3)");
	var_Items = exgrid1.Items(); com_Items = var_Items;
		r = com_Items.AddItem("Root");
		g1 = com_Items.InsertItem(r,,"Group 1");
		h = com_Items.InsertItem(g1,,"Item 1");
		com_Items.CellValue(h,COMVariant::createFromInt(1),COMVariant::createFromInt(1));
		com_Items.CellValue(h,COMVariant::createFromInt(2),COMVariant::createFromInt(10));
		h = com_Items.InsertItem(g1,,"Item 2");
		com_Items.CellValue(h,COMVariant::createFromInt(1),COMVariant::createFromInt(2));
		com_Items.CellValue(h,COMVariant::createFromInt(2),COMVariant::createFromInt(11));
		g2 = com_Items.InsertItem(r,,"Group 2");
		h = com_Items.InsertItem(g2,,"Item 1");
		com_Items.CellValue(h,COMVariant::createFromInt(1),COMVariant::createFromInt(3));
		com_Items.CellValue(h,COMVariant::createFromInt(2),COMVariant::createFromInt(12));
		h = com_Items.InsertItem(g2,,"Item 2");
		com_Items.CellValue(h,COMVariant::createFromInt(1),COMVariant::createFromInt(4));
		com_Items.CellValue(h,COMVariant::createFromInt(2),COMVariant::createFromInt(13));
		com_Items.ExpandItem(0,true);
	exgrid1.EndUpdate();
	exgrid1.FreezeEvents(false);
}
1207
Highlight the leaf items

public void init()
{
	COM com_Columns,com_ConditionalFormat,com_Items;
	anytype var_Columns,var_ConditionalFormat,var_Items;
	int h,hR;
	;

	super();

	exgrid1.BeginUpdate();
	var_ConditionalFormat = COM::createFromObject(exgrid1.ConditionalFormats()).Add("%CC0=0"); com_ConditionalFormat = var_ConditionalFormat;
	com_ConditionalFormat.ForeColor(WinApi::RGB2int(128,128,128));
	exgrid1.HeaderAppearance(4/*Etched*/);
	exgrid1.HeaderHeight(24);
	exgrid1.LinesAtRoot(-1/*exLinesAtRoot*/);
	var_Columns = exgrid1.Columns(); com_Columns = var_Columns;
		COM::createFromVariant(com_Columns.Add("Item")).Width(16);
		com_Columns.Add("Desc");
	var_Items = exgrid1.Items(); com_Items = var_Items;
		hR = com_Items.AddItem("Root");
		com_Items.CellValue(hR,COMVariant::createFromInt(1),"The root directory /");
		com_Items.ExpandItem(hR,true);
		h = com_Items.InsertItem(hR,,"Home");
		com_Items.CellValue(h,COMVariant::createFromInt(1),"The home directory with user directories Alice and Bob");
		com_Items.InsertItem(h,,"Alice");
		com_Items.InsertItem(h,,"Bob");
		com_Items.ExpandItem(h,true);
		h = com_Items.InsertItem(hR,,"Etc");
		com_Items.CellValue(h,COMVariant::createFromInt(1),"The etc directory with one configuration file");
		h = com_Items.InsertItem(h,,"nginx.conf");
		com_Items.CellValue(com_Items.InsertItem(hR,,"Var"),COMVariant::createFromInt(1),"The var directory");
	exgrid1.EndUpdate();
}
1206
Highlight the parent items

public void init()
{
	COM com_Columns,com_ConditionalFormat,com_Items;
	anytype var_Columns,var_ConditionalFormat,var_Items;
	int h,hR;
	;

	super();

	exgrid1.BeginUpdate();
	var_ConditionalFormat = COM::createFromObject(exgrid1.ConditionalFormats()).Add("%CC0"); com_ConditionalFormat = var_ConditionalFormat;
	com_ConditionalFormat.ForeColor(WinApi::RGB2int(255,0,0));
	exgrid1.HeaderAppearance(4/*Etched*/);
	exgrid1.HeaderHeight(24);
	exgrid1.LinesAtRoot(-1/*exLinesAtRoot*/);
	var_Columns = exgrid1.Columns(); com_Columns = var_Columns;
		COM::createFromVariant(com_Columns.Add("Item")).Width(16);
		com_Columns.Add("Desc");
	var_Items = exgrid1.Items(); com_Items = var_Items;
		hR = com_Items.AddItem("Root");
		com_Items.CellValue(hR,COMVariant::createFromInt(1),"The root directory /");
		com_Items.ExpandItem(hR,true);
		h = com_Items.InsertItem(hR,,"Home");
		com_Items.CellValue(h,COMVariant::createFromInt(1),"The home directory with user directories Alice and Bob");
		com_Items.InsertItem(h,,"Alice");
		com_Items.InsertItem(h,,"Bob");
		com_Items.ExpandItem(h,true);
		h = com_Items.InsertItem(hR,,"Etc");
		com_Items.CellValue(h,COMVariant::createFromInt(1),"The etc directory with one configuration file");
		h = com_Items.InsertItem(h,,"nginx.conf");
		com_Items.CellValue(com_Items.InsertItem(hR,,"Var"),COMVariant::createFromInt(1),"The var directory");
	exgrid1.EndUpdate();
}
1205
Highlight the item being expanded or collapsed

public void init()
{
	COM com_Columns,com_ConditionalFormat,com_Items;
	anytype var_Columns,var_ConditionalFormat,var_Items;
	int h,hR;
	;

	super();

	exgrid1.BeginUpdate();
	var_ConditionalFormat = COM::createFromObject(exgrid1.ConditionalFormats()).Add("%CX0"); com_ConditionalFormat = var_ConditionalFormat;
	com_ConditionalFormat.Bold(true);
	exgrid1.HeaderAppearance(4/*Etched*/);
	exgrid1.HeaderHeight(24);
	exgrid1.LinesAtRoot(-1/*exLinesAtRoot*/);
	var_Columns = exgrid1.Columns(); com_Columns = var_Columns;
		COM::createFromVariant(com_Columns.Add("Item")).Width(16);
		com_Columns.Add("Desc");
	var_Items = exgrid1.Items(); com_Items = var_Items;
		hR = com_Items.AddItem("Root");
		com_Items.CellValue(hR,COMVariant::createFromInt(1),"The root directory /");
		com_Items.ExpandItem(hR,true);
		h = com_Items.InsertItem(hR,,"Home");
		com_Items.CellValue(h,COMVariant::createFromInt(1),"The home directory with user directories Alice and Bob");
		com_Items.InsertItem(h,,"Alice");
		com_Items.InsertItem(h,,"Bob");
		com_Items.ExpandItem(h,true);
		h = com_Items.InsertItem(hR,,"Etc");
		com_Items.CellValue(h,COMVariant::createFromInt(1),"The etc directory with one configuration file");
		h = com_Items.InsertItem(h,,"nginx.conf");
		com_Items.CellValue(com_Items.InsertItem(hR,,"Var"),COMVariant::createFromInt(1),"The var directory");
	exgrid1.EndUpdate();
}
1204
I am using exTotalColumn. Is there an option to exclude specific cells to display the total

// Change event - Occurs when the user changes the cell's content.
void onEvent_Change(int   _Item, int   _ColIndex, COMVariant /*variant*/   _NewValue)
{
	;
	exgrid1.Refresh();
}

public void init()
{
	COM com_Column,com_Column1,com_Column2,com_Columns,com_Editor,com_Items;
	anytype var_Column,var_Column1,var_Column2,var_Columns,var_Editor,var_Items;
	int g1,g2,h,r;
	;

	super();

	exgrid1.FreezeEvents(true);
	exgrid1.BeginUpdate();
	exgrid1.HeaderAppearance(4/*Etched*/);
	exgrid1.HeaderHeight(24);
	exgrid1.LinesAtRoot(-1/*exLinesAtRoot*/);
	var_Columns = exgrid1.Columns(); com_Columns = var_Columns;
		com_Columns.Add("Description");
		var_Column = COM::createFromVariant(com_Columns.Add("Qty")); com_Column = var_Column;
			var_Editor = COM::createFromObject(com_Column.Editor()); com_Editor = var_Editor;
			com_Editor.EditType(4/*SpinType*/);
			com_Column.Def(20/*exTotalColumn*/,"sum(current,rec,%1)");
		var_Column1 = COM::createFromVariant(com_Columns.Add("Price")); com_Column1 = var_Column1;
			com_Column1.Def(20/*exTotalColumn*/,"avg(current,rec,%2)");
			var_Editor = COM::createFromObject(com_Column1.Editor()); com_Editor = var_Editor;
			com_Editor.EditType(4/*SpinType*/);
		var_Column2 = COM::createFromVariant(com_Columns.Add("Amount")); com_Column2 = var_Column2;
			com_Column2.ComputedField("%1 * %2");
			com_Column2.Def(20/*exTotalColumn*/,"sum(current,rec,%3)");
	var_Items = exgrid1.Items(); com_Items = var_Items;
		r = com_Items.AddItem("Root");
		g1 = com_Items.InsertItem(r,,"Group 1");
		com_Items.FormatCell(g1,COMVariant::createFromInt(2),"`<average missing>`");
		com_Items.CellEditorVisible(g1,COMVariant::createFromInt(2),false);
		com_Items.CellBold(g1,COMVariant::createFromInt(2),true);
		com_Items.CellForeColor(g1,COMVariant::createFromInt(2),WinApi::RGB2int(255,0,0));
		h = com_Items.InsertItem(g1,,"Item 1");
		com_Items.CellValue(h,COMVariant::createFromInt(1),COMVariant::createFromInt(1));
		com_Items.CellValue(h,COMVariant::createFromInt(2),COMVariant::createFromInt(10));
		h = com_Items.InsertItem(g1,,"Item 2");
		com_Items.CellValue(h,COMVariant::createFromInt(1),COMVariant::createFromInt(2));
		com_Items.CellValue(h,COMVariant::createFromInt(2),COMVariant::createFromInt(11));
		g2 = com_Items.InsertItem(r,,"Group 2");
		h = com_Items.InsertItem(g2,,"Item 1");
		com_Items.CellValue(h,COMVariant::createFromInt(1),COMVariant::createFromInt(3));
		com_Items.CellValue(h,COMVariant::createFromInt(2),COMVariant::createFromInt(12));
		h = com_Items.InsertItem(g2,,"Item 2");
		com_Items.CellValue(h,COMVariant::createFromInt(1),COMVariant::createFromInt(4));
		com_Items.CellValue(h,COMVariant::createFromInt(2),COMVariant::createFromInt(13));
		com_Items.ExpandItem(0,true);
	exgrid1.EndUpdate();
	exgrid1.FreezeEvents(false);
}
1203
How can I add a total column

// Change event - Occurs when the user changes the cell's content.
void onEvent_Change(int   _Item, int   _ColIndex, COMVariant /*variant*/   _NewValue)
{
	;
	exgrid1.Refresh();
}

public void init()
{
	COM com_Column,com_Column1,com_Column2,com_Columns,com_Editor,com_Items;
	anytype var_Column,var_Column1,var_Column2,var_Columns,var_Editor,var_Items;
	int g1,g2,h,r;
	;

	super();

	exgrid1.FreezeEvents(true);
	exgrid1.BeginUpdate();
	exgrid1.HeaderAppearance(4/*Etched*/);
	exgrid1.HeaderHeight(24);
	exgrid1.LinesAtRoot(-1/*exLinesAtRoot*/);
	var_Columns = exgrid1.Columns(); com_Columns = var_Columns;
		com_Columns.Add("Description");
		var_Column = COM::createFromVariant(com_Columns.Add("Qty")); com_Column = var_Column;
			var_Editor = COM::createFromObject(com_Column.Editor()); com_Editor = var_Editor;
			com_Editor.EditType(4/*SpinType*/);
			com_Column.Def(20/*exTotalColumn*/,"sum(current,rec,%1)");
		var_Column1 = COM::createFromVariant(com_Columns.Add("Price")); com_Column1 = var_Column1;
			com_Column1.Def(20/*exTotalColumn*/,"avg(current,rec,%2)");
			var_Editor = COM::createFromObject(com_Column1.Editor()); com_Editor = var_Editor;
			com_Editor.EditType(4/*SpinType*/);
		var_Column2 = COM::createFromVariant(com_Columns.Add("Amount")); com_Column2 = var_Column2;
			com_Column2.ComputedField("%1 * %2");
			com_Column2.Def(20/*exTotalColumn*/,"sum(current,rec,%3)");
	var_Items = exgrid1.Items(); com_Items = var_Items;
		r = com_Items.AddItem("Root");
		g1 = com_Items.InsertItem(r,,"Group 1");
		h = com_Items.InsertItem(g1,,"Item 1");
		com_Items.CellValue(h,COMVariant::createFromInt(1),COMVariant::createFromInt(1));
		com_Items.CellValue(h,COMVariant::createFromInt(2),COMVariant::createFromInt(10));
		h = com_Items.InsertItem(g1,,"Item 2");
		com_Items.CellValue(h,COMVariant::createFromInt(1),COMVariant::createFromInt(2));
		com_Items.CellValue(h,COMVariant::createFromInt(2),COMVariant::createFromInt(11));
		g2 = com_Items.InsertItem(r,,"Group 2");
		h = com_Items.InsertItem(g2,,"Item 1");
		com_Items.CellValue(h,COMVariant::createFromInt(1),COMVariant::createFromInt(3));
		com_Items.CellValue(h,COMVariant::createFromInt(2),COMVariant::createFromInt(12));
		h = com_Items.InsertItem(g2,,"Item 2");
		com_Items.CellValue(h,COMVariant::createFromInt(1),COMVariant::createFromInt(4));
		com_Items.CellValue(h,COMVariant::createFromInt(2),COMVariant::createFromInt(13));
		com_Items.ExpandItem(0,true);
	exgrid1.EndUpdate();
	exgrid1.FreezeEvents(false);
}
1202
Is it possible to disable sizing(size) the column
public void init()
{
	COM com_Column;
	anytype var_Column;
	;

	super();

	exgrid1.BeginUpdate();
	exgrid1.HeaderAppearance(4/*Etched*/);
	exgrid1.DrawGridLines(2/*exVLines*/);
	var_Column = COM::createFromVariant(exgrid1.Columns().Add("32px")); com_Column = var_Column;
		com_Column.Width(32);
		com_Column.AllowSizing(false);
	exgrid1.Columns().Add("Rest");
	exgrid1.ColumnAutoResize(true);
	exgrid1.EndUpdate();
}
1201
How can I add two columns of 25% and the third of 50%

public void init()
{
	;

	super();

	exgrid1.BeginUpdate();
	exgrid1.HeaderAppearance(4/*Etched*/);
	exgrid1.DrawGridLines(2/*exVLines*/);
	COM::createFromVariant(exgrid1.Columns().Add("25%")).Width(25);
	COM::createFromVariant(exgrid1.Columns().Add("25%")).Width(25);
	COM::createFromVariant(exgrid1.Columns().Add("50%")).Width(50);
	exgrid1.ColumnAutoResize(true);
	exgrid1.EndUpdate();
}