1261
Mask for Floating-Point Numbers (Emglish Style: . as Decimal, , as Grouping Separator)
/*
	Copy and paste the following directives to your header file as
	it defines the namespace 'EXGRIDLib' for the library: 'ExGrid 1.0 Control Library'

	#import <ExGrid.dll>
	using namespace EXGRIDLib;
*/
EXGRIDLib::IGridPtr spGrid1 = GetDlgItem(IDC_GRID1)->GetControlUnknown();
spGrid1->BeginUpdate();
spGrid1->PutHeaderAppearance(EXGRIDLib::Etched);
spGrid1->PutHeaderHeight(24);
spGrid1->PutDrawGridLines(EXGRIDLib::exRowLines);
spGrid1->PutGridLineStyle(EXGRIDLib::exGridLinesSolid);
spGrid1->PutSelForeColor(spGrid1->GetForeColor());
spGrid1->PutSelBackColor(spGrid1->GetBackColor());
spGrid1->PutShowFocusRect(VARIANT_FALSE);
EXGRIDLib::IColumnPtr var_Column = ((EXGRIDLib::IColumnPtr)(spGrid1->GetColumns()->Add(L"Float(English-style)")));
	var_Column->PutSortType(EXGRIDLib::SortNumeric);
	var_Column->PutFormatColumn(L"value format `3`");
	var_Column->PutHeaderAlignment(EXGRIDLib::RightAlignment);
	var_Column->PutAlignment(EXGRIDLib::RightAlignment);
	EXGRIDLib::IEditorPtr var_Editor = var_Column->GetEditor();
		var_Editor->PutEditType(EXGRIDLib::MaskType);
		var_Editor->PutMask(L"!999,999,990.000;;;float,right,negative,grouping=\\,,decimal=.");
EXGRIDLib::IItemsPtr var_Items = spGrid1->GetItems();
	var_Items->AddItem(double(192278.12));
	var_Items->AddItem(double(2829.7));
	var_Items->AddItem(double(7391.55));
	var_Items->AddItem(double(50812.23));
	var_Items->AddItem(double(913.04));
	var_Items->AddItem(double(127500.88));
	var_Items->AddItem(double(62.19));
	var_Items->AddItem(long(1));
spGrid1->EndUpdate();

1260
Mask for Floating-Point Numbers (German Style: , as Decimal, . as Grouping Separator)
/*
	Copy and paste the following directives to your header file as
	it defines the namespace 'EXGRIDLib' for the library: 'ExGrid 1.0 Control Library'

	#import <ExGrid.dll>
	using namespace EXGRIDLib;
*/
EXGRIDLib::IGridPtr spGrid1 = GetDlgItem(IDC_GRID1)->GetControlUnknown();
spGrid1->BeginUpdate();
spGrid1->PutHeaderAppearance(EXGRIDLib::Etched);
spGrid1->PutHeaderHeight(24);
spGrid1->PutDrawGridLines(EXGRIDLib::exRowLines);
spGrid1->PutGridLineStyle(EXGRIDLib::exGridLinesSolid);
spGrid1->PutSelForeColor(spGrid1->GetForeColor());
spGrid1->PutSelBackColor(spGrid1->GetBackColor());
spGrid1->PutShowFocusRect(VARIANT_FALSE);
EXGRIDLib::IColumnPtr var_Column = ((EXGRIDLib::IColumnPtr)(spGrid1->GetColumns()->Add(L"Float(German-style)")));
	var_Column->PutSortType(EXGRIDLib::SortNumeric);
	var_Column->PutFormatColumn(L"value format `3`");
	var_Column->PutHeaderAlignment(EXGRIDLib::RightAlignment);
	var_Column->PutAlignment(EXGRIDLib::RightAlignment);
	EXGRIDLib::IEditorPtr var_Editor = var_Column->GetEditor();
		var_Editor->PutEditType(EXGRIDLib::MaskType);
		var_Editor->PutMask(L"!999.999.990,000;;;float,right,grouping=.,decimal=\\,");
EXGRIDLib::IItemsPtr var_Items = spGrid1->GetItems();
	var_Items->AddItem(double(192278.12));
	var_Items->AddItem(double(2829.7));
	var_Items->AddItem(double(7391.55));
	var_Items->AddItem(double(50812.23));
	var_Items->AddItem(double(913.04));
	var_Items->AddItem(double(127500.88));
	var_Items->AddItem(double(62.19));
	var_Items->AddItem(long(1));
spGrid1->EndUpdate();

1259
Locks the first visible column on the left and the last visible column on the right

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

	#import <ExGrid.dll>
	using namespace EXGRIDLib;
*/
EXGRIDLib::IGridPtr spGrid1 = GetDlgItem(IDC_GRID1)->GetControlUnknown();
spGrid1->BeginUpdate();
spGrid1->PutColumnAutoResize(VARIANT_FALSE);
spGrid1->PutBackColorLock(RGB(192,192,192));
spGrid1->PutGridLineStyle(EXGRIDLib::exGridLinesSolid);
spGrid1->PutDrawGridLines(EXGRIDLib::exVLines);
spGrid1->PutHeaderAppearance(EXGRIDLib::Etched);
/*
	Includes the definition for CreateObject function like follows:

	#include <comdef.h>
	IUnknownPtr CreateObject( BSTR Object )
	{
		IUnknownPtr spResult;
		spResult.CreateInstance( Object );
		return spResult;
	};

*/
/*
	Copy and paste the following directives to your header file as
	it defines the namespace 'ADODB' for the library: 'Microsoft ActiveX Data Objects 6.1 Library'

	#import <msado15.dll> rename("EOF","REOF")
*/
ADODB::_RecordsetPtr rs = ::CreateObject(L"ADOR.Recordset");
	rs->Open("Orders","Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\\Program Files\\Exontrol\\ExGrid\\Sample\\Access\\misc.mdb",ADODB::adOpenStatic,ADODB::adLockOptimistic,0);
spGrid1->PutDataSource(((ADODB::_RecordsetPtr)(rs)));
spGrid1->PutCountLockedColumns(17);
spGrid1->EndUpdate();

1258
Lock the column on the right

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

	#import <ExGrid.dll>
	using namespace EXGRIDLib;
*/
EXGRIDLib::IGridPtr spGrid1 = GetDlgItem(IDC_GRID1)->GetControlUnknown();
spGrid1->BeginUpdate();
spGrid1->PutColumnAutoResize(VARIANT_FALSE);
spGrid1->PutBackColorLock(RGB(192,192,192));
spGrid1->PutGridLineStyle(EXGRIDLib::exGridLinesSolid);
spGrid1->PutDrawGridLines(EXGRIDLib::exVLines);
spGrid1->PutHeaderAppearance(EXGRIDLib::Etched);
/*
	Includes the definition for CreateObject function like follows:

	#include <comdef.h>
	IUnknownPtr CreateObject( BSTR Object )
	{
		IUnknownPtr spResult;
		spResult.CreateInstance( Object );
		return spResult;
	};

*/
/*
	Copy and paste the following directives to your header file as
	it defines the namespace 'ADODB' for the library: 'Microsoft ActiveX Data Objects 6.1 Library'

	#import <msado15.dll> rename("EOF","REOF")
*/
ADODB::_RecordsetPtr rs = ::CreateObject(L"ADOR.Recordset");
	rs->Open("Orders","Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\\Program Files\\Exontrol\\ExGrid\\Sample\\Access\\misc.mdb",ADODB::adOpenStatic,ADODB::adLockOptimistic,0);
spGrid1->PutDataSource(((ADODB::_RecordsetPtr)(rs)));
spGrid1->PutCountLockedColumns(16);
spGrid1->EndUpdate();

1257
Lock the column on the left

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

	#import <ExGrid.dll>
	using namespace EXGRIDLib;
*/
EXGRIDLib::IGridPtr spGrid1 = GetDlgItem(IDC_GRID1)->GetControlUnknown();
spGrid1->BeginUpdate();
spGrid1->PutColumnAutoResize(VARIANT_FALSE);
spGrid1->PutBackColorLock(RGB(192,192,192));
spGrid1->PutGridLineStyle(EXGRIDLib::exGridLinesSolid);
spGrid1->PutDrawGridLines(EXGRIDLib::exVLines);
spGrid1->PutHeaderAppearance(EXGRIDLib::Etched);
/*
	Includes the definition for CreateObject function like follows:

	#include <comdef.h>
	IUnknownPtr CreateObject( BSTR Object )
	{
		IUnknownPtr spResult;
		spResult.CreateInstance( Object );
		return spResult;
	};

*/
/*
	Copy and paste the following directives to your header file as
	it defines the namespace 'ADODB' for the library: 'Microsoft ActiveX Data Objects 6.1 Library'

	#import <msado15.dll> rename("EOF","REOF")
*/
ADODB::_RecordsetPtr rs = ::CreateObject(L"ADOR.Recordset");
	rs->Open("Orders","Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\\Program Files\\Exontrol\\ExGrid\\Sample\\Access\\misc.mdb",ADODB::adOpenStatic,ADODB::adLockOptimistic,0);
spGrid1->PutDataSource(((ADODB::_RecordsetPtr)(rs)));
spGrid1->PutCountLockedColumns(1);
spGrid1->EndUpdate();

1256
Update the item's lock state - pinning it to the top, bottom, or making it scrollable

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

	#import <ExGrid.dll>
	using namespace EXGRIDLib;
*/
EXGRIDLib::IGridPtr spGrid1 = GetDlgItem(IDC_GRID1)->GetControlUnknown();
spGrid1->BeginUpdate();
spGrid1->GetColumns()->Add(L"Column");
EXGRIDLib::IItemsPtr var_Items = spGrid1->GetItems();
	var_Items->AddItem("un-locked item");
	var_Items->PutLockItem(var_Items->AddItem("top-locked item"),EXGRIDLib::exLockTop);
	var_Items->PutLockItem(var_Items->AddItem("bottom-locked item"),EXGRIDLib::exLockBottom);
spGrid1->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 OnChangedGrid1(long   Item, long   ColIndex)
{
	/*
		Copy and paste the following directives to your header file as
		it defines the namespace 'EXGRIDLib' for the library: 'ExGrid 1.0 Control Library'
		#import <ExGrid.dll>
		using namespace EXGRIDLib;
	*/
	EXGRIDLib::IGridPtr spGrid1 = GetDlgItem(IDC_GRID1)->GetControlUnknown();
	OutputDebugStringW( _bstr_t(spGrid1->GetItems()->GetCellValue(Item,ColIndex)) );
}

EXGRIDLib::IGridPtr spGrid1 = GetDlgItem(IDC_GRID1)->GetControlUnknown();
spGrid1->BeginUpdate();
((EXGRIDLib::IColumnPtr)(spGrid1->GetColumns()->Add(L"Edit")))->GetEditor()->PutEditType(EXGRIDLib::EditType);
spGrid1->GetItems()->AddItem("Item 1");
spGrid1->GetItems()->AddItem("Item 2");
spGrid1->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 OnAnchorClickGrid1(LPCTSTR   AnchorID, LPCTSTR   Options)
{
	/*
		Copy and paste the following directives to your header file as
		it defines the namespace 'EXGRIDLib' for the library: 'ExGrid 1.0 Control Library'
		#import <ExGrid.dll>
		using namespace EXGRIDLib;
	*/
	EXGRIDLib::IGridPtr spGrid1 = GetDlgItem(IDC_GRID1)->GetControlUnknown();
	_variant_t i = spGrid1->FormatABC(L"int(value)",AnchorID,vtMissing,vtMissing);
	EXGRIDLib::IItemsPtr var_Items = spGrid1->GetItems();
		i = var_Items->GetItemByIndex(i);
		VARIANT_BOOL exp = var_Items->GetExpandItem(i);
		var_Items->PutExpandItem(i,VARIANT_FALSE);
}

EXGRIDLib::IGridPtr spGrid1 = GetDlgItem(IDC_GRID1)->GetControlUnknown();
spGrid1->BeginUpdate();
spGrid1->PutHTMLPicture(L"expand",_bstr_t("gCJKBOI4NBQaBQAhQNJJIIhShQACERCAIA0RD7zf5hiIBOZSI5CACuZwcdMRAhnIJNIMKWKPBb8MIFiIJOBILJzhQOYc7YYBY5vVBkiIYOhFLB0KZvMx0O5hORlABQM") +
	"JpNx0FxOIpUEA1FwxFw3RbWe45iK2MpYJJmJJJFQABERmgaAM0AMRJURDd1AF3hUQhQoAIDvsRAURGIBw8ThRaiJpQ4EwsKNURyxgjsRzEKv1TqtXrNbrtfsIAwgASAH" +
	"AGShQwGQzGABUGEzudAqgyWdSmWw2Fw+sABSHI4AGH1XAGAxGAwywlI6eRqjGi1YuaJJEIJUHBPYqSJYKQAwCBDKbBPbncBibrUKQjGLFQo+TBFfR5GaUAR/KbGICyRx" +
	"siCOQClgdJxGoMpkGycpdDqUZ0EoJQJHYVoWCSCA4kEbRlHKRwJiYcYCH0PBNB2JwYCaCRsGcE8LDyfZKg+U59EsAZMlQCgJkcEA9CsywkiKJwiFcIQwEEgI=");
spGrid1->PutHTMLPicture(L"collapse",_bstr_t("gCJKBOI4NBQaBQAhQNJJIIhShQACERCAIA0RD7zf5hiIBOZSI5CACuZwcdMRAhnIJNIMKWKPBb8MIFiIJOBILJzhQOYU7YQBCooJSAiIYOhFLB0KZvMx0O5hORlABQM") +
	"JpNx0FxOIpUEA1FwxFw3RbWe45iK2MpYJJmJJJFQABERmgaAM0AMRJURDd1AF3hUQhQoAIDvsRAURGIBw8ThRaiJpQ4EwsKNURyzyO13dGEAGYzWcqlWrFarlesA3AGc" +
	"SAHAGShQwGQzGABUGEv2TAAFUGS26Uy2GwuH1wAKQ5HAAw+s4YwGIwGGWISpVLiXT5MrxiJyJJEIJUHBPYqSXYOQAgBgAB6jJwufxxX7YYhdYhFCSsSwSC4uMLoQajNJ" +
	"AG8QgZAgSIqGMCwRBkAJDicGwuiMeoHGeaRFlAU5qDwQQ6A+CYnlgPQeisGJfl4AJYhsRISjQYwJHIcpmmALAtlMEpkE4YBREmEpPBAARdicSw8AES5fi+fI5g+PpcAA" +
	"UJKgyCYknaZRrssJIiicIhXCEMBBICA==");
spGrid1->PutHTMLPicture(L"empty",_bstr_t("gCJKBOI4NBQaBQAhQNJJIIhShQACERCAIA0RD7zf5hiIBOZSI5CACuZwcdMRAhnIJNIMKWKPBb8MIFiIJOBILJzhQOYE7YABNTWRIJiIYOhFLB0KZvMx0O5hORlABQM") +
	"JpNx0FxOIpUEA1FwxFw3RbWe45iK2MpYJJmJJJFQABERmgaAM0AMRJURDd1AF3hUQhQoAIDvsRAURGIBw8ThRaiJpQ4EwsKNURyy/O13dGEAGYzWcqlWrFarlesA3AGc" +
	"SAHAGShQwGQzGABUGEv2TAAFUGS26Uy2GwuH1wAKQ5HAAw+s4YwGIwGGWYSvDpndpkQ9xhRTJJEIJUHBPdqSGIKYAwBgDUpCfytH57FqoVaTKQTGS0DJ6cDBDzOGwIfA" +
	"NHMIxJDmf5CFIAxwA4Q5HEQVJlEWRxnBkMANjsPoqBSEAElkfZ5CMFJMHCC52BALBGjkDpHCuXIAB2bQdEGaQgFIbbLCSIonCIVwhDAQSAg==");
spGrid1->PutHeaderVisible(VARIANT_FALSE);
spGrid1->PutHasLines(EXGRIDLib::exNoLine);
spGrid1->PutHasButtons(EXGRIDLib::exNoButtons);
spGrid1->PutIndent(12);
spGrid1->PutDefaultItemHeight(24);
spGrid1->PutDrawGridLines(EXGRIDLib::exHLines);
spGrid1->PutGridLineStyle(EXGRIDLib::exGridLinesSolid);
spGrid1->PutGridLineColor(RGB(204,204,204));
spGrid1->PutShowFocusRect(VARIANT_FALSE);
spGrid1->PutExpandOnDblClick(VARIANT_FALSE);
spGrid1->PutExpandOnKeys(VARIANT_FALSE);
EXGRIDLib::IColumnsPtr var_Columns = spGrid1->GetColumns();
	EXGRIDLib::IColumnPtr var_Column = ((EXGRIDLib::IColumnPtr)(var_Columns->Add(L"Item")));
		var_Column->PutDef(EXGRIDLib::exCellValueFormat,long(1));
		var_Column->PutFormatColumn(_bstr_t("(len(parent(1 index ``)) ? (`<b><fgcolor gray>` + (1 pos ``) + `. ` + `</fgcolor></b>` + (%CC0 ? (`<a ` + (0 index ``) + `>`) :") +
	" ``) + `<img>` + (%CC0 ? (not %CX0 ? `expand` : `collapse`) : `empty`) + `:16</img>` + (%CC0 ? (`</a>`) : ``)) : ``) + ` ` + val" +
	"ue");
		EXGRIDLib::IEditorPtr var_Editor = var_Column->GetEditor();
			var_Editor->PutEditType(EXGRIDLib::EditType);
			var_Editor->PutOption(EXGRIDLib::exEditorAdjustPos,"32 4 -4 -4");
EXGRIDLib::IItemsPtr var_Items = spGrid1->GetItems();
	long hRoot = var_Items->AddItem("ACME Corporation");
	var_Items->PutSelectableItem(hRoot,VARIANT_FALSE);
	var_Items->PutExpandItem(hRoot,VARIANT_TRUE);
	long h = var_Items->InsertItem(hRoot,vtMissing,"Management");
	var_Items->InsertItem(h,vtMissing,"CEO - Alice Brown");
	var_Items->InsertItem(h,vtMissing,"COO - James Lee");
	h = var_Items->InsertItem(hRoot,vtMissing,"HR Department");
	var_Items->InsertItem(h,vtMissing,"Recruiter - Jane Smith");
	var_Items->InsertItem(h,vtMissing,"HR Assistant - Bob Green");
	var_Items->PutExpandItem(h,VARIANT_TRUE);
	h = var_Items->InsertItem(h,vtMissing,"Engineering");
	var_Items->InsertItem(h,vtMissing,"Software Team");
	h = var_Items->InsertItem(h,vtMissing,"Lead Developer - Mark H.");
	var_Items->InsertItem(h,vtMissing,"Frontend Dev - Emily R.");
	var_Items->InsertItem(h,vtMissing,"Backend Dev - Tom W.");
	var_Items->InsertItem(hRoot,vtMissing,"QA Team");
spGrid1->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 OnAnchorClickGrid1(LPCTSTR   AnchorID, LPCTSTR   Options)
{
	/*
		Copy and paste the following directives to your header file as
		it defines the namespace 'EXGRIDLib' for the library: 'ExGrid 1.0 Control Library'
		#import <ExGrid.dll>
		using namespace EXGRIDLib;
	*/
	EXGRIDLib::IGridPtr spGrid1 = GetDlgItem(IDC_GRID1)->GetControlUnknown();
	_variant_t i = spGrid1->FormatABC(L"int(value)",AnchorID,vtMissing,vtMissing);
	EXGRIDLib::IItemsPtr var_Items = spGrid1->GetItems();
		i = var_Items->GetItemByIndex(i);
		VARIANT_BOOL exp = var_Items->GetExpandItem(i);
		var_Items->PutExpandItem(i,VARIANT_FALSE);
}

EXGRIDLib::IGridPtr spGrid1 = GetDlgItem(IDC_GRID1)->GetControlUnknown();
spGrid1->BeginUpdate();
spGrid1->PutHTMLPicture(L"expand",_bstr_t("gCJKBOI4NBQaBQAhQNJJIIhShQACERCAIA0RD7zf5hiIBOZSI5CACuZwcdMRAhnIJNIMKWKPBb8MIFiIJOBILJzhQOYc7YYBY5vVBkiIYOhFLB0KZvMx0O5hORlABQM") +
	"JpNx0FxOIpUEA1FwxFw3RbWe45iK2MpYJJmJJJFQABERmgaAM0AMRJURDd1AF3hUQhQoAIDvsRAURGIBw8ThRaiJpQ4EwsKNURyxgjsRzEKv1TqtXrNbrtfsIAwgASAH" +
	"AGShQwGQzGABUGEzudAqgyWdSmWw2Fw+sABSHI4AGH1XAGAxGAwywlI6eRqjGi1YuaJJEIJUHBPYqSJYKQAwCBDKbBPbncBibrUKQjGLFQo+TBFfR5GaUAR/KbGICyRx" +
	"siCOQClgdJxGoMpkGycpdDqUZ0EoJQJHYVoWCSCA4kEbRlHKRwJiYcYCH0PBNB2JwYCaCRsGcE8LDyfZKg+U59EsAZMlQCgJkcEA9CsywkiKJwiFcIQwEEgI=");
spGrid1->PutHTMLPicture(L"collapse",_bstr_t("gCJKBOI4NBQaBQAhQNJJIIhShQACERCAIA0RD7zf5hiIBOZSI5CACuZwcdMRAhnIJNIMKWKPBb8MIFiIJOBILJzhQOYU7YQBCooJSAiIYOhFLB0KZvMx0O5hORlABQM") +
	"JpNx0FxOIpUEA1FwxFw3RbWe45iK2MpYJJmJJJFQABERmgaAM0AMRJURDd1AF3hUQhQoAIDvsRAURGIBw8ThRaiJpQ4EwsKNURyzyO13dGEAGYzWcqlWrFarlesA3AGc" +
	"SAHAGShQwGQzGABUGEv2TAAFUGS26Uy2GwuH1wAKQ5HAAw+s4YwGIwGGWISpVLiXT5MrxiJyJJEIJUHBPYqSXYOQAgBgAB6jJwufxxX7YYhdYhFCSsSwSC4uMLoQajNJ" +
	"AG8QgZAgSIqGMCwRBkAJDicGwuiMeoHGeaRFlAU5qDwQQ6A+CYnlgPQeisGJfl4AJYhsRISjQYwJHIcpmmALAtlMEpkE4YBREmEpPBAARdicSw8AES5fi+fI5g+PpcAA" +
	"UJKgyCYknaZRrssJIiicIhXCEMBBICA==");
spGrid1->PutHeaderVisible(VARIANT_FALSE);
spGrid1->PutHasLines(EXGRIDLib::exNoLine);
spGrid1->PutHasButtons(EXGRIDLib::exNoButtons);
spGrid1->PutIndent(12);
spGrid1->PutDefaultItemHeight(24);
spGrid1->PutDrawGridLines(EXGRIDLib::exHLines);
spGrid1->PutGridLineStyle(EXGRIDLib::exGridLinesSolid);
spGrid1->PutGridLineColor(RGB(204,204,204));
spGrid1->PutShowFocusRect(VARIANT_FALSE);
spGrid1->PutExpandOnDblClick(VARIANT_FALSE);
spGrid1->PutExpandOnKeys(VARIANT_FALSE);
EXGRIDLib::IColumnsPtr var_Columns = spGrid1->GetColumns();
	EXGRIDLib::IColumnPtr var_Column = ((EXGRIDLib::IColumnPtr)(var_Columns->Add(L"Item")));
		var_Column->PutDef(EXGRIDLib::exCellValueFormat,long(1));
		var_Column->PutFormatColumn(_bstr_t("(len(parent(1 index ``)) ? (`<b><fgcolor gray>` + (1 pos ``) + `. ` + `</fgcolor></b>` + `<a ` + (0 index ``) + `><img>` + (%CC") +
	"0 ? (not %CX0 ? `expand` : `collapse`) : ``) + `:16</img></a>`) : ``) + ` ` + value");
EXGRIDLib::IItemsPtr var_Items = spGrid1->GetItems();
	long hRoot = var_Items->AddItem("ACME Corporation");
	var_Items->PutSelectableItem(hRoot,VARIANT_FALSE);
	var_Items->PutExpandItem(hRoot,VARIANT_TRUE);
	long h = var_Items->InsertItem(hRoot,vtMissing,"Management");
	var_Items->InsertItem(h,vtMissing,"CEO - Alice Brown");
	var_Items->InsertItem(h,vtMissing,"COO - James Lee");
	h = var_Items->InsertItem(hRoot,vtMissing,"HR Department");
	var_Items->InsertItem(h,vtMissing,"Recruiter - Jane Smith");
	var_Items->InsertItem(h,vtMissing,"HR Assistant - Bob Green");
	var_Items->PutExpandItem(h,VARIANT_TRUE);
	h = var_Items->InsertItem(h,vtMissing,"Engineering");
	var_Items->InsertItem(h,vtMissing,"Software Team");
	h = var_Items->InsertItem(h,vtMissing,"Lead Developer - Mark H.");
	var_Items->InsertItem(h,vtMissing,"Frontend Dev - Emily R.");
	var_Items->InsertItem(h,vtMissing,"Backend Dev - Tom W.");
	var_Items->InsertItem(hRoot,vtMissing,"QA Team");
spGrid1->EndUpdate();

1252
Expandable bullet list

// AnchorClick event - Occurs when an anchor element is clicked.
void OnAnchorClickGrid1(LPCTSTR   AnchorID, LPCTSTR   Options)
{
	/*
		Copy and paste the following directives to your header file as
		it defines the namespace 'EXGRIDLib' for the library: 'ExGrid 1.0 Control Library'
		#import <ExGrid.dll>
		using namespace EXGRIDLib;
	*/
	EXGRIDLib::IGridPtr spGrid1 = GetDlgItem(IDC_GRID1)->GetControlUnknown();
	_variant_t i = spGrid1->FormatABC(L"int(value)",AnchorID,vtMissing,vtMissing);
	EXGRIDLib::IItemsPtr var_Items = spGrid1->GetItems();
		i = var_Items->GetItemByIndex(i);
		VARIANT_BOOL exp = var_Items->GetExpandItem(i);
		var_Items->PutExpandItem(i,VARIANT_FALSE);
}

EXGRIDLib::IGridPtr spGrid1 = GetDlgItem(IDC_GRID1)->GetControlUnknown();
spGrid1->BeginUpdate();
spGrid1->PutHTMLPicture(L"expand",_bstr_t("gCJKBOI4NBQaBQAhQNJJIIhShQACERCAIA0RD7zf5hiIBOZSI5CACuZwcdMRAhnIJNIMKWKPBb8MIFiIJOBILJzhQOYM7YIBXCRNbtiIYOhFLB0KZvMx0O5hORlABQM") +
	"JpNx0FxOIpUEA1FwxFw3RbWe45iK2MpYJJmJJJFQABERmgaAM0AMRJURDd1AF3hUQhQoAIDvsRAURGIBw8ThRaiJpQ4EwsKNURyzZO13dGEAGYzWcqlWrFarlesA3AGc" +
	"SAHAGShQwGQzGABUGEv2TAAFUGS26Uy2GwuH1wAKQ5HAAw+s4YwGIwGGWNa6awbST7DBTiLyJJEIJUHBPUqSGJuYYwCAES5pBiQfyEX4QKAFH6QSihJQ/GZlET1FhIcg" +
	"GnUdoVHMmxajSIghlMKhsGiAAFggQ5dmKcRHEUEhbFAFQBgacABmAAJgAAcAJkAZgNjUcwDFecYcD8QoIDsGJjD6aYaGyHI7mqLRfgGfBcg+TYggkEhakQThtFsEpAE2" +
	"Xh7goSIJiSHp6haKgPGOXx3j+c5hiKLpri6JAPHWYJREuFJkBCYxcFeYS7ikJQzG0ZIVGKMBYGsVwXDWVQHjqfpjAoYpyE4Z5vH2YoHDkZwzkkUxHC8pwCgifIHBCdk4" +
	"GMLQVmcXJVhicxWi4IIUiKSQ1A8cBUj+eBEGCFQlFSIophiPRkFAWBLFALhwm+HhKjARpmgSGwNn4AIUCcZZUFEKoVmwywkiKJwiFcIQwEEgI");
spGrid1->PutHTMLPicture(L"collapse",_bstr_t("gCJKBOI4NBQaBQAhQNJJIIhShQACERCAIA0RD7zf5hiIBOZSI5CACuZwcdMRAhnIJNIMKWKPBb8MIFiIJOBILJzhQOYM7YIBXCRNbtiIYOhFLB0KZvMx0O5hORlABQM") +
	"JpNx0FxOIpUEA1FwxFw3RbWe45iK2MpYJJmJJJFQABERmgaAM0AMRJURDd1AF3hUQhQoAIDvsRAURGIBw8ThRaiJpQ4EwsKNURyzZO13dGEAGYzWcqlWrFarlesA3AGc" +
	"SAHAGShQwGQzGABUGEv2TAAFUGS26Uy2GwuH1wAKQ5HAAw+s4YwGIwGGWNa6awbST7DBTiLZJJEIJUHBPdpSGKOAQxCAzGhIBKfbAvUBsSIPbiVMhLTxJPK3banJB0N5" +
	"sA8VQRlmCRKjSCRaAIOgCiORISiWaI0DYLJPBYJBxB+LAqAMBRgAsIABjAAhYAOEB5kKDQ5kGZoaCaL5vH2KoEDCbpbDaWRrE8SopE+AA/DcMoZkgAgkhKERDlcdYEHA" +
	"JRzg4IpyCAKRyl6HZLGONwMEMb5clwWB3n2CZki6FoWC4cwQCbGYukKwhiAwOp3HIEJFGCNBGDyLArE8R56n4RUnlOShHGcXJdgcKQlCOSRdEcLw8DmAoInyexvFeMRG" +
	"G0DARmsbRZmsfRxleFZeHoD4eEKKRxGmPANgAC5xDAWpYHMW4uCGywkiKJwiFcIQwEEgI");
spGrid1->PutHeaderVisible(VARIANT_FALSE);
spGrid1->PutHasLines(EXGRIDLib::exNoLine);
spGrid1->PutHasButtons(EXGRIDLib::exNoButtons);
spGrid1->PutIndent(12);
spGrid1->PutDefaultItemHeight(24);
spGrid1->PutDrawGridLines(EXGRIDLib::exHLines);
spGrid1->PutGridLineStyle(EXGRIDLib::exGridLinesSolid);
spGrid1->PutGridLineColor(RGB(204,204,204));
spGrid1->PutShowFocusRect(VARIANT_FALSE);
spGrid1->PutExpandOnDblClick(VARIANT_FALSE);
spGrid1->PutExpandOnKeys(VARIANT_FALSE);
EXGRIDLib::IColumnsPtr var_Columns = spGrid1->GetColumns();
	EXGRIDLib::IColumnPtr var_Column = ((EXGRIDLib::IColumnPtr)(var_Columns->Add(L"Item")));
		var_Column->PutDef(EXGRIDLib::exCellValueFormat,long(1));
		var_Column->PutFormatColumn(_bstr_t("(len(parent(1 index ``)) ? (`<b><fgcolor gray>` + (1 pos ``) + `. ` + `</fgcolor></b>` + `<a ` + (0 index ``) + `><img>` + (%CC") +
	"0 ? (not %CX0 ? `expand` : `collapse`) : `collapse`) + `:16</img></a>`) : ``) + ` ` + value");
		EXGRIDLib::IEditorPtr var_Editor = var_Column->GetEditor();
			var_Editor->PutEditType(EXGRIDLib::EditType);
			var_Editor->PutOption(EXGRIDLib::exEditorAdjustPos,"32D 4D -4D -4D");
EXGRIDLib::IItemsPtr var_Items = spGrid1->GetItems();
	long hRoot = var_Items->AddItem("ACME Corporation");
	var_Items->PutSelectableItem(hRoot,VARIANT_FALSE);
	var_Items->PutExpandItem(hRoot,VARIANT_TRUE);
	long h = var_Items->InsertItem(hRoot,vtMissing,"Management");
	var_Items->InsertItem(h,vtMissing,"CEO - Alice Brown");
	var_Items->InsertItem(h,vtMissing,"COO - James Lee");
	h = var_Items->InsertItem(hRoot,vtMissing,"HR Department");
	var_Items->InsertItem(h,vtMissing,"Recruiter - Jane Smith");
	var_Items->InsertItem(h,vtMissing,"HR Assistant - Bob Green");
	var_Items->PutExpandItem(h,VARIANT_TRUE);
	h = var_Items->InsertItem(h,vtMissing,"Engineering");
	var_Items->InsertItem(h,vtMissing,"Software Team");
	h = var_Items->InsertItem(h,vtMissing,"Lead Developer - Mark H.");
	var_Items->InsertItem(h,vtMissing,"Frontend Dev - Emily R.");
	var_Items->InsertItem(h,vtMissing,"Backend Dev - Tom W.");
	var_Items->InsertItem(hRoot,vtMissing,"QA Team");
spGrid1->EndUpdate();

1251
Does grouping support multi-column sorting

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

	#import <ExGrid.dll>
	using namespace EXGRIDLib;
*/
EXGRIDLib::IGridPtr spGrid1 = GetDlgItem(IDC_GRID1)->GetControlUnknown();
spGrid1->BeginUpdate();
spGrid1->PutSingleSort(VARIANT_FALSE);
spGrid1->PutHeaderVisible(VARIANT_FALSE);
spGrid1->PutDrawGridLines(EXGRIDLib::exRowLines);
spGrid1->PutGridLineStyle(EXGRIDLib::exGridLinesSolid);
spGrid1->PutAllowGroupBy(VARIANT_TRUE);
spGrid1->GetColumns()->Add(L"Prefix");
spGrid1->GetColumns()->Add(L"Region");
spGrid1->GetColumns()->Add(L"City");
EXGRIDLib::IColumnPtr var_Column = ((EXGRIDLib::IColumnPtr)(spGrid1->GetColumns()->Add(L"Sort")));
	var_Column->PutComputedField(L"%1 + %2");
	var_Column->PutVisible(VARIANT_FALSE);
EXGRIDLib::IItemsPtr var_Items = spGrid1->GetItems();
	long h = var_Items->AddItem("+33");
	var_Items->PutCellValue(h,long(1),"Corsica");
	var_Items->PutCellValue(h,long(2),"Bastia ");
	h = var_Items->AddItem("+33");
	var_Items->PutCellValue(h,long(1),"Occitanie");
	var_Items->PutCellValue(h,long(2),"Toulouse ");
	h = var_Items->AddItem("+33");
	var_Items->PutCellValue(h,long(1),"Corsica");
	var_Items->PutCellValue(h,long(2),"Ajaccio");
	h = var_Items->AddItem("+33");
	var_Items->PutCellValue(h,long(1),"Occitanie");
	var_Items->PutCellValue(h,long(2),"Carcassonne ");
spGrid1->PutLayout(L"multiplesort=\"C0:2\";singlesort=\"C3:1\";");
spGrid1->EndUpdate();

1250
How can I vertically scroll the control
/*
	Copy and paste the following directives to your header file as
	it defines the namespace 'EXGRIDLib' for the library: 'ExGrid 1.0 Control Library'

	#import <ExGrid.dll>
	using namespace EXGRIDLib;
*/
EXGRIDLib::IGridPtr spGrid1 = GetDlgItem(IDC_GRID1)->GetControlUnknown();
spGrid1->BeginUpdate();
spGrid1->PutColumnAutoResize(VARIANT_FALSE);
/*
	Includes the definition for CreateObject function like follows:

	#include <comdef.h>
	IUnknownPtr CreateObject( BSTR Object )
	{
		IUnknownPtr spResult;
		spResult.CreateInstance( Object );
		return spResult;
	};

*/
/*
	Copy and paste the following directives to your header file as
	it defines the namespace 'DAO' for the library: 'Microsoft Office 15.0 Access database engine Object Library'

	#import <ACEDAO.DLL>
*/
spGrid1->PutDataSource(((DAO::Recordset2Ptr)(::CreateObject(L"DAO.DBEngine.120")->OpenDatabase(L"C:\\Program Files\\Exontrol\\ExGrid\\Sample\\Access\\misc.accdb",vtMissing,vtMissing,vtMissing)->OpenRecordset(L"Orders",vtMissing,vtMissing,vtMissing)->OpenDatabase(L"C:\\Program Files\\Exontrol\\ExGrid\\Sample\\Access\\misc.accdb",vtMissing,vtMissing,vtMissing)->OpenRecordset(L"Orders",vtMissing,vtMissing,vtMissing))));
spGrid1->PutLayout(L"Collapse=\"\";VScroll=10");
spGrid1->EndUpdate();

1249
Export the items as a two-dimensional array

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

	#import <ExGrid.dll>
	using namespace EXGRIDLib;
*/
EXGRIDLib::IGridPtr spGrid1 = GetDlgItem(IDC_GRID1)->GetControlUnknown();
spGrid1->BeginUpdate();
spGrid1->PutHeaderAppearance(EXGRIDLib::Etched);
spGrid1->PutScrollBySingleLine(VARIANT_TRUE);
spGrid1->PutLinesAtRoot(EXGRIDLib::exGroupLinesOutside);
EXGRIDLib::IColumnsPtr var_Columns = spGrid1->GetColumns();
	EXGRIDLib::IColumnPtr var_Column = ((EXGRIDLib::IColumnPtr)(var_Columns->Add(L"Desc")));
		var_Column->PutWidth(32);
		var_Column->PutDef(EXGRIDLib::exCellHasCheckBox,VARIANT_TRUE);
	EXGRIDLib::IColumnPtr var_Column1 = ((EXGRIDLib::IColumnPtr)(var_Columns->Add(L"Amount")));
		var_Column1->PutDef(EXGRIDLib::exTotalColumn,"sum(current,rec,%1)");
		var_Column1->PutFormatColumn(L"currency(value)");
EXGRIDLib::IItemsPtr var_Items = spGrid1->GetItems();
	var_Items->PutLockedItemCount(EXGRIDLib::exTop,1);
	long h = var_Items->GetLockedItem(EXGRIDLib::exTop,0);
	var_Items->PutCellValue(h,long(0),"All");
	var_Items->PutCellValue(h,long(1),"sum(all,rec,%1)");
	var_Items->PutCellValueFormat(h,long(1),EXGRIDLib::exTotalField);
	long r = var_Items->AddItem("Root 1");
	long g1 = var_Items->InsertItem(r,vtMissing,"Group A");
	var_Items->PutCellValue(var_Items->InsertItem(g1,vtMissing,"Item 1"),long(1),long(1));
	var_Items->PutCellValue(var_Items->InsertItem(g1,vtMissing,"Item 2"),long(1),long(2));
	var_Items->PutCellState(var_Items->GetItemByIndex(3),long(0),1);
	long g2 = var_Items->InsertItem(r,vtMissing,"Group B");
	var_Items->PutCellValue(var_Items->InsertItem(g2,vtMissing,"Item 3"),long(1),long(3));
	var_Items->PutCellValue(var_Items->InsertItem(g2,vtMissing,"Item 4"),long(1),long(4));
	var_Items->PutExpandItem(g1,VARIANT_TRUE);
	var_Items->PutExpandItem(r,VARIANT_TRUE);
	h = var_Items->AddItem("divider");
	var_Items->PutItemDivider(h,0);
	var_Items->PutSelectableItem(h,VARIANT_FALSE);
	var_Items->PutSortableItem(h,VARIANT_FALSE);
	var_Items->PutItemHeight(h,1);
	r = var_Items->AddItem("Root 2");
	g1 = var_Items->InsertItem(r,vtMissing,"Group C");
	var_Items->PutCellValue(var_Items->InsertItem(g1,vtMissing,"Item 5"),long(1),long(5));
	var_Items->PutCellValue(var_Items->InsertItem(g1,vtMissing,"Item 6"),long(1),long(6));
	var_Items->PutSelectItem(var_Items->GetItemByIndex(2),VARIANT_TRUE);
spGrid1->PutItems(spGrid1->Export("array","all"),vtMissing);
spGrid1->EndUpdate();

1248
Export only expanded items

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

	#import <ExGrid.dll>
	using namespace EXGRIDLib;
*/
EXGRIDLib::IGridPtr spGrid1 = GetDlgItem(IDC_GRID1)->GetControlUnknown();
spGrid1->BeginUpdate();
spGrid1->PutHeaderAppearance(EXGRIDLib::Etched);
spGrid1->PutScrollBySingleLine(VARIANT_TRUE);
spGrid1->PutLinesAtRoot(EXGRIDLib::exGroupLinesOutside);
EXGRIDLib::IColumnsPtr var_Columns = spGrid1->GetColumns();
	EXGRIDLib::IColumnPtr var_Column = ((EXGRIDLib::IColumnPtr)(var_Columns->Add(L"Desc")));
		var_Column->PutWidth(32);
		var_Column->PutDef(EXGRIDLib::exCellHasCheckBox,VARIANT_TRUE);
	EXGRIDLib::IColumnPtr var_Column1 = ((EXGRIDLib::IColumnPtr)(var_Columns->Add(L"Amount")));
		var_Column1->PutDef(EXGRIDLib::exTotalColumn,"sum(current,rec,%1)");
		var_Column1->PutFormatColumn(L"currency(value)");
EXGRIDLib::IItemsPtr var_Items = spGrid1->GetItems();
	var_Items->PutLockedItemCount(EXGRIDLib::exTop,1);
	long h = var_Items->GetLockedItem(EXGRIDLib::exTop,0);
	var_Items->PutCellValue(h,long(0),"All");
	var_Items->PutCellValue(h,long(1),"sum(all,rec,%1)");
	var_Items->PutCellValueFormat(h,long(1),EXGRIDLib::exTotalField);
	long r = var_Items->AddItem("Root 1");
	long g1 = var_Items->InsertItem(r,vtMissing,"Group A");
	var_Items->PutCellValue(var_Items->InsertItem(g1,vtMissing,"Item 1"),long(1),long(1));
	var_Items->PutCellValue(var_Items->InsertItem(g1,vtMissing,"Item 2"),long(1),long(2));
	var_Items->PutCellState(var_Items->GetItemByIndex(3),long(0),1);
	long g2 = var_Items->InsertItem(r,vtMissing,"Group B");
	var_Items->PutCellValue(var_Items->InsertItem(g2,vtMissing,"Item 3"),long(1),long(3));
	var_Items->PutCellValue(var_Items->InsertItem(g2,vtMissing,"Item 4"),long(1),long(4));
	var_Items->PutExpandItem(g1,VARIANT_TRUE);
	var_Items->PutExpandItem(r,VARIANT_TRUE);
	h = var_Items->AddItem("divider");
	var_Items->PutItemDivider(h,0);
	var_Items->PutSelectableItem(h,VARIANT_FALSE);
	var_Items->PutSortableItem(h,VARIANT_FALSE);
	var_Items->PutItemHeight(h,1);
	r = var_Items->AddItem("Root 2");
	g1 = var_Items->InsertItem(r,vtMissing,"Group C");
	var_Items->PutCellValue(var_Items->InsertItem(g1,vtMissing,"Item 5"),long(1),long(5));
	var_Items->PutCellValue(var_Items->InsertItem(g1,vtMissing,"Item 6"),long(1),long(6));
	var_Items->PutSelectItem(var_Items->GetItemByIndex(2),VARIANT_TRUE);
spGrid1->EndUpdate();
OutputDebugStringW( _bstr_t(spGrid1->Export("","only(expanded)")) );

1247
Export only selectable, sortable leaf items that are neither locked nor dividers

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

	#import <ExGrid.dll>
	using namespace EXGRIDLib;
*/
EXGRIDLib::IGridPtr spGrid1 = GetDlgItem(IDC_GRID1)->GetControlUnknown();
spGrid1->BeginUpdate();
spGrid1->PutHeaderAppearance(EXGRIDLib::Etched);
spGrid1->PutScrollBySingleLine(VARIANT_TRUE);
spGrid1->PutLinesAtRoot(EXGRIDLib::exGroupLinesOutside);
EXGRIDLib::IColumnsPtr var_Columns = spGrid1->GetColumns();
	EXGRIDLib::IColumnPtr var_Column = ((EXGRIDLib::IColumnPtr)(var_Columns->Add(L"Desc")));
		var_Column->PutWidth(32);
		var_Column->PutDef(EXGRIDLib::exCellHasCheckBox,VARIANT_TRUE);
	EXGRIDLib::IColumnPtr var_Column1 = ((EXGRIDLib::IColumnPtr)(var_Columns->Add(L"Amount")));
		var_Column1->PutDef(EXGRIDLib::exTotalColumn,"sum(current,rec,%1)");
		var_Column1->PutFormatColumn(L"currency(value)");
EXGRIDLib::IItemsPtr var_Items = spGrid1->GetItems();
	var_Items->PutLockedItemCount(EXGRIDLib::exTop,1);
	long h = var_Items->GetLockedItem(EXGRIDLib::exTop,0);
	var_Items->PutCellValue(h,long(0),"All");
	var_Items->PutCellValue(h,long(1),"sum(all,rec,%1)");
	var_Items->PutCellValueFormat(h,long(1),EXGRIDLib::exTotalField);
	long r = var_Items->AddItem("Root 1");
	long g1 = var_Items->InsertItem(r,vtMissing,"Group A");
	var_Items->PutCellValue(var_Items->InsertItem(g1,vtMissing,"Item 1"),long(1),long(1));
	var_Items->PutCellValue(var_Items->InsertItem(g1,vtMissing,"Item 2"),long(1),long(2));
	var_Items->PutCellState(var_Items->GetItemByIndex(3),long(0),1);
	long g2 = var_Items->InsertItem(r,vtMissing,"Group B");
	var_Items->PutCellValue(var_Items->InsertItem(g2,vtMissing,"Item 3"),long(1),long(3));
	var_Items->PutCellValue(var_Items->InsertItem(g2,vtMissing,"Item 4"),long(1),long(4));
	var_Items->PutExpandItem(g1,VARIANT_TRUE);
	var_Items->PutExpandItem(r,VARIANT_TRUE);
	h = var_Items->AddItem("divider");
	var_Items->PutItemDivider(h,0);
	var_Items->PutSelectableItem(h,VARIANT_FALSE);
	var_Items->PutSortableItem(h,VARIANT_FALSE);
	var_Items->PutItemHeight(h,1);
	r = var_Items->AddItem("Root 2");
	g1 = var_Items->InsertItem(r,vtMissing,"Group C");
	var_Items->PutCellValue(var_Items->InsertItem(g1,vtMissing,"Item 5"),long(1),long(5));
	var_Items->PutCellValue(var_Items->InsertItem(g1,vtMissing,"Item 6"),long(1),long(6));
	var_Items->PutSelectItem(var_Items->GetItemByIndex(2),VARIANT_TRUE);
spGrid1->EndUpdate();
OutputDebugStringW( _bstr_t(spGrid1->Export("","only(leaf,sortable,selectable,!divider,!locked)")) );

1246
Export only non-divider items

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

	#import <ExGrid.dll>
	using namespace EXGRIDLib;
*/
EXGRIDLib::IGridPtr spGrid1 = GetDlgItem(IDC_GRID1)->GetControlUnknown();
spGrid1->BeginUpdate();
spGrid1->PutHeaderAppearance(EXGRIDLib::Etched);
spGrid1->PutScrollBySingleLine(VARIANT_TRUE);
spGrid1->PutLinesAtRoot(EXGRIDLib::exGroupLinesOutside);
EXGRIDLib::IColumnsPtr var_Columns = spGrid1->GetColumns();
	EXGRIDLib::IColumnPtr var_Column = ((EXGRIDLib::IColumnPtr)(var_Columns->Add(L"Desc")));
		var_Column->PutWidth(32);
		var_Column->PutDef(EXGRIDLib::exCellHasCheckBox,VARIANT_TRUE);
	EXGRIDLib::IColumnPtr var_Column1 = ((EXGRIDLib::IColumnPtr)(var_Columns->Add(L"Amount")));
		var_Column1->PutDef(EXGRIDLib::exTotalColumn,"sum(current,rec,%1)");
		var_Column1->PutFormatColumn(L"currency(value)");
EXGRIDLib::IItemsPtr var_Items = spGrid1->GetItems();
	var_Items->PutLockedItemCount(EXGRIDLib::exTop,1);
	long h = var_Items->GetLockedItem(EXGRIDLib::exTop,0);
	var_Items->PutCellValue(h,long(0),"All");
	var_Items->PutCellValue(h,long(1),"sum(all,rec,%1)");
	var_Items->PutCellValueFormat(h,long(1),EXGRIDLib::exTotalField);
	long r = var_Items->AddItem("Root 1");
	long g1 = var_Items->InsertItem(r,vtMissing,"Group A");
	var_Items->PutCellValue(var_Items->InsertItem(g1,vtMissing,"Item 1"),long(1),long(1));
	var_Items->PutCellValue(var_Items->InsertItem(g1,vtMissing,"Item 2"),long(1),long(2));
	var_Items->PutCellState(var_Items->GetItemByIndex(3),long(0),1);
	long g2 = var_Items->InsertItem(r,vtMissing,"Group B");
	var_Items->PutCellValue(var_Items->InsertItem(g2,vtMissing,"Item 3"),long(1),long(3));
	var_Items->PutCellValue(var_Items->InsertItem(g2,vtMissing,"Item 4"),long(1),long(4));
	var_Items->PutExpandItem(g1,VARIANT_TRUE);
	var_Items->PutExpandItem(r,VARIANT_TRUE);
	h = var_Items->AddItem("divider");
	var_Items->PutItemDivider(h,0);
	var_Items->PutSelectableItem(h,VARIANT_FALSE);
	var_Items->PutSortableItem(h,VARIANT_FALSE);
	var_Items->PutItemHeight(h,1);
	r = var_Items->AddItem("Root 2");
	g1 = var_Items->InsertItem(r,vtMissing,"Group C");
	var_Items->PutCellValue(var_Items->InsertItem(g1,vtMissing,"Item 5"),long(1),long(5));
	var_Items->PutCellValue(var_Items->InsertItem(g1,vtMissing,"Item 6"),long(1),long(6));
	var_Items->PutSelectItem(var_Items->GetItemByIndex(2),VARIANT_TRUE);
spGrid1->EndUpdate();
OutputDebugStringW( _bstr_t(spGrid1->Export("","only(!divider)")) );

1245
Export only selectable items

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

	#import <ExGrid.dll>
	using namespace EXGRIDLib;
*/
EXGRIDLib::IGridPtr spGrid1 = GetDlgItem(IDC_GRID1)->GetControlUnknown();
spGrid1->BeginUpdate();
spGrid1->PutHeaderAppearance(EXGRIDLib::Etched);
spGrid1->PutScrollBySingleLine(VARIANT_TRUE);
spGrid1->PutLinesAtRoot(EXGRIDLib::exGroupLinesOutside);
EXGRIDLib::IColumnsPtr var_Columns = spGrid1->GetColumns();
	EXGRIDLib::IColumnPtr var_Column = ((EXGRIDLib::IColumnPtr)(var_Columns->Add(L"Desc")));
		var_Column->PutWidth(32);
		var_Column->PutDef(EXGRIDLib::exCellHasCheckBox,VARIANT_TRUE);
	EXGRIDLib::IColumnPtr var_Column1 = ((EXGRIDLib::IColumnPtr)(var_Columns->Add(L"Amount")));
		var_Column1->PutDef(EXGRIDLib::exTotalColumn,"sum(current,rec,%1)");
		var_Column1->PutFormatColumn(L"currency(value)");
EXGRIDLib::IItemsPtr var_Items = spGrid1->GetItems();
	var_Items->PutLockedItemCount(EXGRIDLib::exTop,1);
	long h = var_Items->GetLockedItem(EXGRIDLib::exTop,0);
	var_Items->PutCellValue(h,long(0),"All");
	var_Items->PutCellValue(h,long(1),"sum(all,rec,%1)");
	var_Items->PutCellValueFormat(h,long(1),EXGRIDLib::exTotalField);
	long r = var_Items->AddItem("Root 1");
	long g1 = var_Items->InsertItem(r,vtMissing,"Group A");
	var_Items->PutCellValue(var_Items->InsertItem(g1,vtMissing,"Item 1"),long(1),long(1));
	var_Items->PutCellValue(var_Items->InsertItem(g1,vtMissing,"Item 2"),long(1),long(2));
	var_Items->PutCellState(var_Items->GetItemByIndex(3),long(0),1);
	long g2 = var_Items->InsertItem(r,vtMissing,"Group B");
	var_Items->PutCellValue(var_Items->InsertItem(g2,vtMissing,"Item 3"),long(1),long(3));
	var_Items->PutCellValue(var_Items->InsertItem(g2,vtMissing,"Item 4"),long(1),long(4));
	var_Items->PutExpandItem(g1,VARIANT_TRUE);
	var_Items->PutExpandItem(r,VARIANT_TRUE);
	h = var_Items->AddItem("divider");
	var_Items->PutItemDivider(h,0);
	var_Items->PutSelectableItem(h,VARIANT_FALSE);
	var_Items->PutSortableItem(h,VARIANT_FALSE);
	var_Items->PutItemHeight(h,1);
	r = var_Items->AddItem("Root 2");
	g1 = var_Items->InsertItem(r,vtMissing,"Group C");
	var_Items->PutCellValue(var_Items->InsertItem(g1,vtMissing,"Item 5"),long(1),long(5));
	var_Items->PutCellValue(var_Items->InsertItem(g1,vtMissing,"Item 6"),long(1),long(6));
	var_Items->PutSelectItem(var_Items->GetItemByIndex(2),VARIANT_TRUE);
spGrid1->EndUpdate();
OutputDebugStringW( _bstr_t(spGrid1->Export("","only(selectable)")) );

1244
Export only sortable, but not locked items

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

	#import <ExGrid.dll>
	using namespace EXGRIDLib;
*/
EXGRIDLib::IGridPtr spGrid1 = GetDlgItem(IDC_GRID1)->GetControlUnknown();
spGrid1->BeginUpdate();
spGrid1->PutHeaderAppearance(EXGRIDLib::Etched);
spGrid1->PutScrollBySingleLine(VARIANT_TRUE);
spGrid1->PutLinesAtRoot(EXGRIDLib::exGroupLinesOutside);
EXGRIDLib::IColumnsPtr var_Columns = spGrid1->GetColumns();
	EXGRIDLib::IColumnPtr var_Column = ((EXGRIDLib::IColumnPtr)(var_Columns->Add(L"Desc")));
		var_Column->PutWidth(32);
		var_Column->PutDef(EXGRIDLib::exCellHasCheckBox,VARIANT_TRUE);
	EXGRIDLib::IColumnPtr var_Column1 = ((EXGRIDLib::IColumnPtr)(var_Columns->Add(L"Amount")));
		var_Column1->PutDef(EXGRIDLib::exTotalColumn,"sum(current,rec,%1)");
		var_Column1->PutFormatColumn(L"currency(value)");
EXGRIDLib::IItemsPtr var_Items = spGrid1->GetItems();
	var_Items->PutLockedItemCount(EXGRIDLib::exTop,1);
	long h = var_Items->GetLockedItem(EXGRIDLib::exTop,0);
	var_Items->PutCellValue(h,long(0),"All");
	var_Items->PutCellValue(h,long(1),"sum(all,rec,%1)");
	var_Items->PutCellValueFormat(h,long(1),EXGRIDLib::exTotalField);
	long r = var_Items->AddItem("Root 1");
	long g1 = var_Items->InsertItem(r,vtMissing,"Group A");
	var_Items->PutCellValue(var_Items->InsertItem(g1,vtMissing,"Item 1"),long(1),long(1));
	var_Items->PutCellValue(var_Items->InsertItem(g1,vtMissing,"Item 2"),long(1),long(2));
	var_Items->PutCellState(var_Items->GetItemByIndex(3),long(0),1);
	long g2 = var_Items->InsertItem(r,vtMissing,"Group B");
	var_Items->PutCellValue(var_Items->InsertItem(g2,vtMissing,"Item 3"),long(1),long(3));
	var_Items->PutCellValue(var_Items->InsertItem(g2,vtMissing,"Item 4"),long(1),long(4));
	var_Items->PutExpandItem(g1,VARIANT_TRUE);
	var_Items->PutExpandItem(r,VARIANT_TRUE);
	h = var_Items->AddItem("divider");
	var_Items->PutItemDivider(h,0);
	var_Items->PutSelectableItem(h,VARIANT_FALSE);
	var_Items->PutSortableItem(h,VARIANT_FALSE);
	var_Items->PutItemHeight(h,1);
	r = var_Items->AddItem("Root 2");
	g1 = var_Items->InsertItem(r,vtMissing,"Group C");
	var_Items->PutCellValue(var_Items->InsertItem(g1,vtMissing,"Item 5"),long(1),long(5));
	var_Items->PutCellValue(var_Items->InsertItem(g1,vtMissing,"Item 6"),long(1),long(6));
	var_Items->PutSelectItem(var_Items->GetItemByIndex(2),VARIANT_TRUE);
spGrid1->EndUpdate();
OutputDebugStringW( _bstr_t(spGrid1->Export("","only(sortable,!locked)")) );

1243
Export only checked items on specified column

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

	#import <ExGrid.dll>
	using namespace EXGRIDLib;
*/
EXGRIDLib::IGridPtr spGrid1 = GetDlgItem(IDC_GRID1)->GetControlUnknown();
spGrid1->BeginUpdate();
spGrid1->PutHeaderAppearance(EXGRIDLib::Etched);
spGrid1->PutScrollBySingleLine(VARIANT_TRUE);
spGrid1->PutLinesAtRoot(EXGRIDLib::exGroupLinesOutside);
EXGRIDLib::IColumnsPtr var_Columns = spGrid1->GetColumns();
	EXGRIDLib::IColumnPtr var_Column = ((EXGRIDLib::IColumnPtr)(var_Columns->Add(L"Desc")));
		var_Column->PutWidth(32);
		var_Column->PutDef(EXGRIDLib::exCellHasCheckBox,VARIANT_TRUE);
	EXGRIDLib::IColumnPtr var_Column1 = ((EXGRIDLib::IColumnPtr)(var_Columns->Add(L"Amount")));
		var_Column1->PutDef(EXGRIDLib::exTotalColumn,"sum(current,rec,%1)");
		var_Column1->PutFormatColumn(L"currency(value)");
EXGRIDLib::IItemsPtr var_Items = spGrid1->GetItems();
	var_Items->PutLockedItemCount(EXGRIDLib::exTop,1);
	long h = var_Items->GetLockedItem(EXGRIDLib::exTop,0);
	var_Items->PutCellValue(h,long(0),"All");
	var_Items->PutCellValue(h,long(1),"sum(all,rec,%1)");
	var_Items->PutCellValueFormat(h,long(1),EXGRIDLib::exTotalField);
	long r = var_Items->AddItem("Root 1");
	long g1 = var_Items->InsertItem(r,vtMissing,"Group A");
	var_Items->PutCellValue(var_Items->InsertItem(g1,vtMissing,"Item 1"),long(1),long(1));
	var_Items->PutCellValue(var_Items->InsertItem(g1,vtMissing,"Item 2"),long(1),long(2));
	var_Items->PutCellState(var_Items->GetItemByIndex(3),long(0),1);
	long g2 = var_Items->InsertItem(r,vtMissing,"Group B");
	var_Items->PutCellValue(var_Items->InsertItem(g2,vtMissing,"Item 3"),long(1),long(3));
	var_Items->PutCellValue(var_Items->InsertItem(g2,vtMissing,"Item 4"),long(1),long(4));
	var_Items->PutExpandItem(g1,VARIANT_TRUE);
	var_Items->PutExpandItem(r,VARIANT_TRUE);
	h = var_Items->AddItem("divider");
	var_Items->PutItemDivider(h,0);
	var_Items->PutSelectableItem(h,VARIANT_FALSE);
	var_Items->PutSortableItem(h,VARIANT_FALSE);
	var_Items->PutItemHeight(h,1);
	r = var_Items->AddItem("Root 2");
	g1 = var_Items->InsertItem(r,vtMissing,"Group C");
	var_Items->PutCellValue(var_Items->InsertItem(g1,vtMissing,"Item 5"),long(1),long(5));
	var_Items->PutCellValue(var_Items->InsertItem(g1,vtMissing,"Item 6"),long(1),long(6));
	var_Items->PutSelectItem(var_Items->GetItemByIndex(2),VARIANT_TRUE);
spGrid1->EndUpdate();
OutputDebugStringW( _bstr_t(spGrid1->Export("","only(checked[0])")) );

1242
Export only filtered, not locked or divider items

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

	#import <ExGrid.dll>
	using namespace EXGRIDLib;
*/
EXGRIDLib::IGridPtr spGrid1 = GetDlgItem(IDC_GRID1)->GetControlUnknown();
spGrid1->BeginUpdate();
spGrid1->PutHeaderAppearance(EXGRIDLib::Etched);
spGrid1->PutScrollBySingleLine(VARIANT_TRUE);
spGrid1->PutLinesAtRoot(EXGRIDLib::exGroupLinesOutside);
EXGRIDLib::IColumnsPtr var_Columns = spGrid1->GetColumns();
	EXGRIDLib::IColumnPtr var_Column = ((EXGRIDLib::IColumnPtr)(var_Columns->Add(L"Desc")));
		var_Column->PutWidth(32);
		var_Column->PutDef(EXGRIDLib::exCellHasCheckBox,VARIANT_TRUE);
	EXGRIDLib::IColumnPtr var_Column1 = ((EXGRIDLib::IColumnPtr)(var_Columns->Add(L"Amount")));
		var_Column1->PutDef(EXGRIDLib::exTotalColumn,"sum(current,rec,%1)");
		var_Column1->PutFormatColumn(L"currency(value)");
EXGRIDLib::IItemsPtr var_Items = spGrid1->GetItems();
	var_Items->PutLockedItemCount(EXGRIDLib::exTop,1);
	long h = var_Items->GetLockedItem(EXGRIDLib::exTop,0);
	var_Items->PutCellValue(h,long(0),"All");
	var_Items->PutCellValue(h,long(1),"sum(all,rec,%1)");
	var_Items->PutCellValueFormat(h,long(1),EXGRIDLib::exTotalField);
	long r = var_Items->AddItem("Root 1");
	long g1 = var_Items->InsertItem(r,vtMissing,"Group A");
	var_Items->PutCellValue(var_Items->InsertItem(g1,vtMissing,"Item 1"),long(1),long(1));
	var_Items->PutCellValue(var_Items->InsertItem(g1,vtMissing,"Item 2"),long(1),long(2));
	var_Items->PutCellState(var_Items->GetItemByIndex(3),long(0),1);
	long g2 = var_Items->InsertItem(r,vtMissing,"Group B");
	var_Items->PutCellValue(var_Items->InsertItem(g2,vtMissing,"Item 3"),long(1),long(3));
	var_Items->PutCellValue(var_Items->InsertItem(g2,vtMissing,"Item 4"),long(1),long(4));
	var_Items->PutExpandItem(g1,VARIANT_TRUE);
	var_Items->PutExpandItem(r,VARIANT_TRUE);
	h = var_Items->AddItem("divider");
	var_Items->PutItemDivider(h,0);
	var_Items->PutSelectableItem(h,VARIANT_FALSE);
	var_Items->PutSortableItem(h,VARIANT_FALSE);
	var_Items->PutItemHeight(h,1);
	r = var_Items->AddItem("Root 2");
	g1 = var_Items->InsertItem(r,vtMissing,"Group C");
	var_Items->PutCellValue(var_Items->InsertItem(g1,vtMissing,"Item 5"),long(1),long(5));
	var_Items->PutCellValue(var_Items->InsertItem(g1,vtMissing,"Item 6"),long(1),long(6));
	var_Items->PutSelectItem(var_Items->GetItemByIndex(2),VARIANT_TRUE);
spGrid1->EndUpdate();
OutputDebugStringW( _bstr_t(spGrid1->Export("","only(visible,!locked,!divider)")) );

1241
Export only selected items

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

	#import <ExGrid.dll>
	using namespace EXGRIDLib;
*/
EXGRIDLib::IGridPtr spGrid1 = GetDlgItem(IDC_GRID1)->GetControlUnknown();
spGrid1->BeginUpdate();
spGrid1->PutHeaderAppearance(EXGRIDLib::Etched);
spGrid1->PutScrollBySingleLine(VARIANT_TRUE);
spGrid1->PutLinesAtRoot(EXGRIDLib::exGroupLinesOutside);
EXGRIDLib::IColumnsPtr var_Columns = spGrid1->GetColumns();
	EXGRIDLib::IColumnPtr var_Column = ((EXGRIDLib::IColumnPtr)(var_Columns->Add(L"Desc")));
		var_Column->PutWidth(32);
		var_Column->PutDef(EXGRIDLib::exCellHasCheckBox,VARIANT_TRUE);
	EXGRIDLib::IColumnPtr var_Column1 = ((EXGRIDLib::IColumnPtr)(var_Columns->Add(L"Amount")));
		var_Column1->PutDef(EXGRIDLib::exTotalColumn,"sum(current,rec,%1)");
		var_Column1->PutFormatColumn(L"currency(value)");
EXGRIDLib::IItemsPtr var_Items = spGrid1->GetItems();
	var_Items->PutLockedItemCount(EXGRIDLib::exTop,1);
	long h = var_Items->GetLockedItem(EXGRIDLib::exTop,0);
	var_Items->PutCellValue(h,long(0),"All");
	var_Items->PutCellValue(h,long(1),"sum(all,rec,%1)");
	var_Items->PutCellValueFormat(h,long(1),EXGRIDLib::exTotalField);
	long r = var_Items->AddItem("Root 1");
	long g1 = var_Items->InsertItem(r,vtMissing,"Group A");
	var_Items->PutCellValue(var_Items->InsertItem(g1,vtMissing,"Item 1"),long(1),long(1));
	var_Items->PutCellValue(var_Items->InsertItem(g1,vtMissing,"Item 2"),long(1),long(2));
	var_Items->PutCellState(var_Items->GetItemByIndex(3),long(0),1);
	long g2 = var_Items->InsertItem(r,vtMissing,"Group B");
	var_Items->PutCellValue(var_Items->InsertItem(g2,vtMissing,"Item 3"),long(1),long(3));
	var_Items->PutCellValue(var_Items->InsertItem(g2,vtMissing,"Item 4"),long(1),long(4));
	var_Items->PutExpandItem(g1,VARIANT_TRUE);
	var_Items->PutExpandItem(r,VARIANT_TRUE);
	h = var_Items->AddItem("divider");
	var_Items->PutItemDivider(h,0);
	var_Items->PutSelectableItem(h,VARIANT_FALSE);
	var_Items->PutSortableItem(h,VARIANT_FALSE);
	var_Items->PutItemHeight(h,1);
	r = var_Items->AddItem("Root 2");
	g1 = var_Items->InsertItem(r,vtMissing,"Group C");
	var_Items->PutCellValue(var_Items->InsertItem(g1,vtMissing,"Item 5"),long(1),long(5));
	var_Items->PutCellValue(var_Items->InsertItem(g1,vtMissing,"Item 6"),long(1),long(6));
	var_Items->PutSelectItem(var_Items->GetItemByIndex(2),VARIANT_TRUE);
spGrid1->EndUpdate();
OutputDebugStringW( _bstr_t(spGrid1->Export("","only(selected)")) );

1240
Export only locked items

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

	#import <ExGrid.dll>
	using namespace EXGRIDLib;
*/
EXGRIDLib::IGridPtr spGrid1 = GetDlgItem(IDC_GRID1)->GetControlUnknown();
spGrid1->BeginUpdate();
spGrid1->PutHeaderAppearance(EXGRIDLib::Etched);
spGrid1->PutScrollBySingleLine(VARIANT_TRUE);
spGrid1->PutLinesAtRoot(EXGRIDLib::exGroupLinesOutside);
EXGRIDLib::IColumnsPtr var_Columns = spGrid1->GetColumns();
	EXGRIDLib::IColumnPtr var_Column = ((EXGRIDLib::IColumnPtr)(var_Columns->Add(L"Desc")));
		var_Column->PutWidth(32);
		var_Column->PutDef(EXGRIDLib::exCellHasCheckBox,VARIANT_TRUE);
	EXGRIDLib::IColumnPtr var_Column1 = ((EXGRIDLib::IColumnPtr)(var_Columns->Add(L"Amount")));
		var_Column1->PutDef(EXGRIDLib::exTotalColumn,"sum(current,rec,%1)");
		var_Column1->PutFormatColumn(L"currency(value)");
EXGRIDLib::IItemsPtr var_Items = spGrid1->GetItems();
	var_Items->PutLockedItemCount(EXGRIDLib::exTop,1);
	long h = var_Items->GetLockedItem(EXGRIDLib::exTop,0);
	var_Items->PutCellValue(h,long(0),"All");
	var_Items->PutCellValue(h,long(1),"sum(all,rec,%1)");
	var_Items->PutCellValueFormat(h,long(1),EXGRIDLib::exTotalField);
	long r = var_Items->AddItem("Root 1");
	long g1 = var_Items->InsertItem(r,vtMissing,"Group A");
	var_Items->PutCellValue(var_Items->InsertItem(g1,vtMissing,"Item 1"),long(1),long(1));
	var_Items->PutCellValue(var_Items->InsertItem(g1,vtMissing,"Item 2"),long(1),long(2));
	var_Items->PutCellState(var_Items->GetItemByIndex(3),long(0),1);
	long g2 = var_Items->InsertItem(r,vtMissing,"Group B");
	var_Items->PutCellValue(var_Items->InsertItem(g2,vtMissing,"Item 3"),long(1),long(3));
	var_Items->PutCellValue(var_Items->InsertItem(g2,vtMissing,"Item 4"),long(1),long(4));
	var_Items->PutExpandItem(g1,VARIANT_TRUE);
	var_Items->PutExpandItem(r,VARIANT_TRUE);
	h = var_Items->AddItem("divider");
	var_Items->PutItemDivider(h,0);
	var_Items->PutSelectableItem(h,VARIANT_FALSE);
	var_Items->PutSortableItem(h,VARIANT_FALSE);
	var_Items->PutItemHeight(h,1);
	r = var_Items->AddItem("Root 2");
	g1 = var_Items->InsertItem(r,vtMissing,"Group C");
	var_Items->PutCellValue(var_Items->InsertItem(g1,vtMissing,"Item 5"),long(1),long(5));
	var_Items->PutCellValue(var_Items->InsertItem(g1,vtMissing,"Item 6"),long(1),long(6));
	var_Items->PutSelectItem(var_Items->GetItemByIndex(2),VARIANT_TRUE);
spGrid1->EndUpdate();
OutputDebugStringW( _bstr_t(spGrid1->Export("","only(locked)")) );

1239
Export the leaf items of the control, excluding parent or grouped items

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

	#import <ExGrid.dll>
	using namespace EXGRIDLib;
*/
EXGRIDLib::IGridPtr spGrid1 = GetDlgItem(IDC_GRID1)->GetControlUnknown();
spGrid1->BeginUpdate();
spGrid1->PutHeaderAppearance(EXGRIDLib::Etched);
spGrid1->PutScrollBySingleLine(VARIANT_TRUE);
spGrid1->PutLinesAtRoot(EXGRIDLib::exGroupLinesOutside);
EXGRIDLib::IColumnsPtr var_Columns = spGrid1->GetColumns();
	EXGRIDLib::IColumnPtr var_Column = ((EXGRIDLib::IColumnPtr)(var_Columns->Add(L"Desc")));
		var_Column->PutWidth(32);
		var_Column->PutDef(EXGRIDLib::exCellHasCheckBox,VARIANT_TRUE);
	EXGRIDLib::IColumnPtr var_Column1 = ((EXGRIDLib::IColumnPtr)(var_Columns->Add(L"Amount")));
		var_Column1->PutDef(EXGRIDLib::exTotalColumn,"sum(current,rec,%1)");
		var_Column1->PutFormatColumn(L"currency(value)");
EXGRIDLib::IItemsPtr var_Items = spGrid1->GetItems();
	var_Items->PutLockedItemCount(EXGRIDLib::exTop,1);
	long h = var_Items->GetLockedItem(EXGRIDLib::exTop,0);
	var_Items->PutCellValue(h,long(0),"All");
	var_Items->PutCellValue(h,long(1),"sum(all,rec,%1)");
	var_Items->PutCellValueFormat(h,long(1),EXGRIDLib::exTotalField);
	long r = var_Items->AddItem("Root 1");
	long g1 = var_Items->InsertItem(r,vtMissing,"Group A");
	var_Items->PutCellValue(var_Items->InsertItem(g1,vtMissing,"Item 1"),long(1),long(1));
	var_Items->PutCellValue(var_Items->InsertItem(g1,vtMissing,"Item 2"),long(1),long(2));
	var_Items->PutCellState(var_Items->GetItemByIndex(3),long(0),1);
	long g2 = var_Items->InsertItem(r,vtMissing,"Group B");
	var_Items->PutCellValue(var_Items->InsertItem(g2,vtMissing,"Item 3"),long(1),long(3));
	var_Items->PutCellValue(var_Items->InsertItem(g2,vtMissing,"Item 4"),long(1),long(4));
	var_Items->PutExpandItem(g1,VARIANT_TRUE);
	var_Items->PutExpandItem(r,VARIANT_TRUE);
	h = var_Items->AddItem("divider");
	var_Items->PutItemDivider(h,0);
	var_Items->PutSelectableItem(h,VARIANT_FALSE);
	var_Items->PutSortableItem(h,VARIANT_FALSE);
	var_Items->PutItemHeight(h,1);
	r = var_Items->AddItem("Root 2");
	g1 = var_Items->InsertItem(r,vtMissing,"Group C");
	var_Items->PutCellValue(var_Items->InsertItem(g1,vtMissing,"Item 5"),long(1),long(5));
	var_Items->PutCellValue(var_Items->InsertItem(g1,vtMissing,"Item 6"),long(1),long(6));
	var_Items->PutSelectItem(var_Items->GetItemByIndex(2),VARIANT_TRUE);
spGrid1->EndUpdate();
OutputDebugStringW( _bstr_t(spGrid1->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)

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

	#import <ExGrid.dll>
	using namespace EXGRIDLib;
*/
EXGRIDLib::IGridPtr spGrid1 = GetDlgItem(IDC_GRID1)->GetControlUnknown();
spGrid1->BeginUpdate();
spGrid1->PutHeaderAppearance(EXGRIDLib::Etched);
spGrid1->PutScrollBySingleLine(VARIANT_TRUE);
spGrid1->PutLinesAtRoot(EXGRIDLib::exGroupLinesOutside);
EXGRIDLib::IColumnsPtr var_Columns = spGrid1->GetColumns();
	EXGRIDLib::IColumnPtr var_Column = ((EXGRIDLib::IColumnPtr)(var_Columns->Add(L"Desc")));
		var_Column->PutWidth(32);
		var_Column->PutDef(EXGRIDLib::exCellHasCheckBox,VARIANT_TRUE);
	EXGRIDLib::IColumnPtr var_Column1 = ((EXGRIDLib::IColumnPtr)(var_Columns->Add(L"Amount")));
		var_Column1->PutDef(EXGRIDLib::exTotalColumn,"sum(current,rec,%1)");
		var_Column1->PutFormatColumn(L"currency(value)");
EXGRIDLib::IItemsPtr var_Items = spGrid1->GetItems();
	var_Items->PutLockedItemCount(EXGRIDLib::exTop,1);
	long h = var_Items->GetLockedItem(EXGRIDLib::exTop,0);
	var_Items->PutCellValue(h,long(0),"All");
	var_Items->PutCellValue(h,long(1),"sum(all,rec,%1)");
	var_Items->PutCellValueFormat(h,long(1),EXGRIDLib::exTotalField);
	long r = var_Items->AddItem("Root 1");
	long g1 = var_Items->InsertItem(r,vtMissing,"Group A");
	var_Items->PutCellValue(var_Items->InsertItem(g1,vtMissing,"Item 1"),long(1),long(1));
	var_Items->PutCellValue(var_Items->InsertItem(g1,vtMissing,"Item 2"),long(1),long(2));
	var_Items->PutCellState(var_Items->GetItemByIndex(3),long(0),1);
	long g2 = var_Items->InsertItem(r,vtMissing,"Group B");
	var_Items->PutCellValue(var_Items->InsertItem(g2,vtMissing,"Item 3"),long(1),long(3));
	var_Items->PutCellValue(var_Items->InsertItem(g2,vtMissing,"Item 4"),long(1),long(4));
	var_Items->PutExpandItem(g1,VARIANT_TRUE);
	var_Items->PutExpandItem(r,VARIANT_TRUE);
	h = var_Items->AddItem("divider");
	var_Items->PutItemDivider(h,0);
	var_Items->PutSelectableItem(h,VARIANT_FALSE);
	var_Items->PutSortableItem(h,VARIANT_FALSE);
	var_Items->PutItemHeight(h,1);
	r = var_Items->AddItem("Root 2");
	g1 = var_Items->InsertItem(r,vtMissing,"Group C");
	var_Items->PutCellValue(var_Items->InsertItem(g1,vtMissing,"Item 5"),long(1),long(5));
	var_Items->PutCellValue(var_Items->InsertItem(g1,vtMissing,"Item 6"),long(1),long(6));
	var_Items->PutSelectItem(var_Items->GetItemByIndex(2),VARIANT_TRUE);
spGrid1->EndUpdate();
OutputDebugStringW( _bstr_t(spGrid1->Export("","chk")) );

1237
Export the selected-items

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

	#import <ExGrid.dll>
	using namespace EXGRIDLib;
*/
EXGRIDLib::IGridPtr spGrid1 = GetDlgItem(IDC_GRID1)->GetControlUnknown();
spGrid1->BeginUpdate();
spGrid1->PutHeaderAppearance(EXGRIDLib::Etched);
spGrid1->PutScrollBySingleLine(VARIANT_TRUE);
spGrid1->PutLinesAtRoot(EXGRIDLib::exGroupLinesOutside);
EXGRIDLib::IColumnsPtr var_Columns = spGrid1->GetColumns();
	EXGRIDLib::IColumnPtr var_Column = ((EXGRIDLib::IColumnPtr)(var_Columns->Add(L"Desc")));
		var_Column->PutWidth(32);
		var_Column->PutDef(EXGRIDLib::exCellHasCheckBox,VARIANT_TRUE);
	EXGRIDLib::IColumnPtr var_Column1 = ((EXGRIDLib::IColumnPtr)(var_Columns->Add(L"Amount")));
		var_Column1->PutDef(EXGRIDLib::exTotalColumn,"sum(current,rec,%1)");
		var_Column1->PutFormatColumn(L"currency(value)");
EXGRIDLib::IItemsPtr var_Items = spGrid1->GetItems();
	var_Items->PutLockedItemCount(EXGRIDLib::exTop,1);
	long h = var_Items->GetLockedItem(EXGRIDLib::exTop,0);
	var_Items->PutCellValue(h,long(0),"All");
	var_Items->PutCellValue(h,long(1),"sum(all,rec,%1)");
	var_Items->PutCellValueFormat(h,long(1),EXGRIDLib::exTotalField);
	long r = var_Items->AddItem("Root 1");
	long g1 = var_Items->InsertItem(r,vtMissing,"Group A");
	var_Items->PutCellValue(var_Items->InsertItem(g1,vtMissing,"Item 1"),long(1),long(1));
	var_Items->PutCellValue(var_Items->InsertItem(g1,vtMissing,"Item 2"),long(1),long(2));
	var_Items->PutCellState(var_Items->GetItemByIndex(3),long(0),1);
	long g2 = var_Items->InsertItem(r,vtMissing,"Group B");
	var_Items->PutCellValue(var_Items->InsertItem(g2,vtMissing,"Item 3"),long(1),long(3));
	var_Items->PutCellValue(var_Items->InsertItem(g2,vtMissing,"Item 4"),long(1),long(4));
	var_Items->PutExpandItem(g1,VARIANT_TRUE);
	var_Items->PutExpandItem(r,VARIANT_TRUE);
	h = var_Items->AddItem("divider");
	var_Items->PutItemDivider(h,0);
	var_Items->PutSelectableItem(h,VARIANT_FALSE);
	var_Items->PutSortableItem(h,VARIANT_FALSE);
	var_Items->PutItemHeight(h,1);
	r = var_Items->AddItem("Root 2");
	g1 = var_Items->InsertItem(r,vtMissing,"Group C");
	var_Items->PutCellValue(var_Items->InsertItem(g1,vtMissing,"Item 5"),long(1),long(5));
	var_Items->PutCellValue(var_Items->InsertItem(g1,vtMissing,"Item 6"),long(1),long(6));
	var_Items->PutSelectItem(var_Items->GetItemByIndex(2),VARIANT_TRUE);
spGrid1->EndUpdate();
OutputDebugStringW( _bstr_t(spGrid1->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

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

	#import <ExGrid.dll>
	using namespace EXGRIDLib;
*/
EXGRIDLib::IGridPtr spGrid1 = GetDlgItem(IDC_GRID1)->GetControlUnknown();
spGrid1->BeginUpdate();
spGrid1->PutHeaderAppearance(EXGRIDLib::Etched);
spGrid1->PutScrollBySingleLine(VARIANT_TRUE);
spGrid1->PutLinesAtRoot(EXGRIDLib::exGroupLinesOutside);
EXGRIDLib::IColumnsPtr var_Columns = spGrid1->GetColumns();
	EXGRIDLib::IColumnPtr var_Column = ((EXGRIDLib::IColumnPtr)(var_Columns->Add(L"Desc")));
		var_Column->PutWidth(32);
		var_Column->PutDef(EXGRIDLib::exCellHasCheckBox,VARIANT_TRUE);
	EXGRIDLib::IColumnPtr var_Column1 = ((EXGRIDLib::IColumnPtr)(var_Columns->Add(L"Amount")));
		var_Column1->PutDef(EXGRIDLib::exTotalColumn,"sum(current,rec,%1)");
		var_Column1->PutFormatColumn(L"currency(value)");
EXGRIDLib::IItemsPtr var_Items = spGrid1->GetItems();
	var_Items->PutLockedItemCount(EXGRIDLib::exTop,1);
	long h = var_Items->GetLockedItem(EXGRIDLib::exTop,0);
	var_Items->PutCellValue(h,long(0),"All");
	var_Items->PutCellValue(h,long(1),"sum(all,rec,%1)");
	var_Items->PutCellValueFormat(h,long(1),EXGRIDLib::exTotalField);
	long r = var_Items->AddItem("Root 1");
	long g1 = var_Items->InsertItem(r,vtMissing,"Group A");
	var_Items->PutCellValue(var_Items->InsertItem(g1,vtMissing,"Item 1"),long(1),long(1));
	var_Items->PutCellValue(var_Items->InsertItem(g1,vtMissing,"Item 2"),long(1),long(2));
	var_Items->PutCellState(var_Items->GetItemByIndex(3),long(0),1);
	long g2 = var_Items->InsertItem(r,vtMissing,"Group B");
	var_Items->PutCellValue(var_Items->InsertItem(g2,vtMissing,"Item 3"),long(1),long(3));
	var_Items->PutCellValue(var_Items->InsertItem(g2,vtMissing,"Item 4"),long(1),long(4));
	var_Items->PutExpandItem(g1,VARIANT_TRUE);
	var_Items->PutExpandItem(r,VARIANT_TRUE);
	h = var_Items->AddItem("divider");
	var_Items->PutItemDivider(h,0);
	var_Items->PutSelectableItem(h,VARIANT_FALSE);
	var_Items->PutSortableItem(h,VARIANT_FALSE);
	var_Items->PutItemHeight(h,1);
	r = var_Items->AddItem("Root 2");
	g1 = var_Items->InsertItem(r,vtMissing,"Group C");
	var_Items->PutCellValue(var_Items->InsertItem(g1,vtMissing,"Item 5"),long(1),long(5));
	var_Items->PutCellValue(var_Items->InsertItem(g1,vtMissing,"Item 6"),long(1),long(6));
	var_Items->PutSelectItem(var_Items->GetItemByIndex(2),VARIANT_TRUE);
spGrid1->EndUpdate();
OutputDebugStringW( _bstr_t(spGrid1->Export("","vis")) );

1235
Export all items, including the hidden or collapsed items

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

	#import <ExGrid.dll>
	using namespace EXGRIDLib;
*/
EXGRIDLib::IGridPtr spGrid1 = GetDlgItem(IDC_GRID1)->GetControlUnknown();
spGrid1->BeginUpdate();
spGrid1->PutHeaderAppearance(EXGRIDLib::Etched);
spGrid1->PutScrollBySingleLine(VARIANT_TRUE);
spGrid1->PutLinesAtRoot(EXGRIDLib::exGroupLinesOutside);
EXGRIDLib::IColumnsPtr var_Columns = spGrid1->GetColumns();
	EXGRIDLib::IColumnPtr var_Column = ((EXGRIDLib::IColumnPtr)(var_Columns->Add(L"Desc")));
		var_Column->PutWidth(32);
		var_Column->PutDef(EXGRIDLib::exCellHasCheckBox,VARIANT_TRUE);
	EXGRIDLib::IColumnPtr var_Column1 = ((EXGRIDLib::IColumnPtr)(var_Columns->Add(L"Amount")));
		var_Column1->PutDef(EXGRIDLib::exTotalColumn,"sum(current,rec,%1)");
		var_Column1->PutFormatColumn(L"currency(value)");
EXGRIDLib::IItemsPtr var_Items = spGrid1->GetItems();
	var_Items->PutLockedItemCount(EXGRIDLib::exTop,1);
	long h = var_Items->GetLockedItem(EXGRIDLib::exTop,0);
	var_Items->PutCellValue(h,long(0),"All");
	var_Items->PutCellValue(h,long(1),"sum(all,rec,%1)");
	var_Items->PutCellValueFormat(h,long(1),EXGRIDLib::exTotalField);
	long r = var_Items->AddItem("Root 1");
	long g1 = var_Items->InsertItem(r,vtMissing,"Group A");
	var_Items->PutCellValue(var_Items->InsertItem(g1,vtMissing,"Item 1"),long(1),long(1));
	var_Items->PutCellValue(var_Items->InsertItem(g1,vtMissing,"Item 2"),long(1),long(2));
	var_Items->PutCellState(var_Items->GetItemByIndex(3),long(0),1);
	long g2 = var_Items->InsertItem(r,vtMissing,"Group B");
	var_Items->PutCellValue(var_Items->InsertItem(g2,vtMissing,"Item 3"),long(1),long(3));
	var_Items->PutCellValue(var_Items->InsertItem(g2,vtMissing,"Item 4"),long(1),long(4));
	var_Items->PutExpandItem(g1,VARIANT_TRUE);
	var_Items->PutExpandItem(r,VARIANT_TRUE);
	h = var_Items->AddItem("divider");
	var_Items->PutItemDivider(h,0);
	var_Items->PutSelectableItem(h,VARIANT_FALSE);
	var_Items->PutSortableItem(h,VARIANT_FALSE);
	var_Items->PutItemHeight(h,1);
	r = var_Items->AddItem("Root 2");
	g1 = var_Items->InsertItem(r,vtMissing,"Group C");
	var_Items->PutCellValue(var_Items->InsertItem(g1,vtMissing,"Item 5"),long(1),long(5));
	var_Items->PutCellValue(var_Items->InsertItem(g1,vtMissing,"Item 6"),long(1),long(6));
	var_Items->PutSelectItem(var_Items->GetItemByIndex(2),VARIANT_TRUE);
spGrid1->EndUpdate();
OutputDebugStringW( _bstr_t(spGrid1->Export("","all")) );

1234
Bolds only the expanded items

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

	#import <ExGrid.dll>
	using namespace EXGRIDLib;
*/
EXGRIDLib::IGridPtr spGrid1 = GetDlgItem(IDC_GRID1)->GetControlUnknown();
spGrid1->BeginUpdate();
spGrid1->PutHeaderAppearance(EXGRIDLib::Etched);
spGrid1->PutHeaderHeight(24);
spGrid1->PutLinesAtRoot(EXGRIDLib::exLinesAtRoot);
spGrid1->GetConditionalFormats()->Add(L"%CX0",vtMissing)->PutBold(VARIANT_TRUE);
spGrid1->GetColumns()->Add(L"Description");
EXGRIDLib::IItemsPtr var_Items = spGrid1->GetItems();
	long h = var_Items->AddItem("Root 1");
	var_Items->InsertItem(h,vtMissing,"Child 1");
	var_Items->InsertItem(var_Items->InsertItem(h,vtMissing,"Child 2"),vtMissing,"Sub-Child 2");
	var_Items->PutCellState(var_Items->InsertItem(h,vtMissing,"Child 3"),long(0),1);
	var_Items->PutExpandItem(h,VARIANT_TRUE);
	h = var_Items->AddItem("Root 2");
	var_Items->InsertItem(h,vtMissing,"Child 1");
	var_Items->InsertItem(h,vtMissing,"Child 2");
	var_Items->InsertItem(h,vtMissing,"Child 3");
spGrid1->EndUpdate();

1233
Displays the root item's index and value/caption using expressions

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

	#import <ExGrid.dll>
	using namespace EXGRIDLib;
*/
EXGRIDLib::IGridPtr spGrid1 = GetDlgItem(IDC_GRID1)->GetControlUnknown();
spGrid1->BeginUpdate();
spGrid1->PutHeaderAppearance(EXGRIDLib::Etched);
spGrid1->PutHeaderHeight(24);
spGrid1->PutLinesAtRoot(EXGRIDLib::exLinesAtRoot);
spGrid1->PutAutoDrag(EXGRIDLib::exAutoDragPositionAny);
spGrid1->PutAllowCopyPaste(EXGRIDLib::AllowCopyPasteEnum(EXGRIDLib::exAllowPaste | EXGRIDLib::exAllowCut | EXGRIDLib::exAllowCopy));
spGrid1->PutSingleSel(VARIANT_FALSE);
spGrid1->PutDrawGridLines(EXGRIDLib::exRowLines);
spGrid1->PutGridLineStyle(EXGRIDLib::exGridLinesSolid);
spGrid1->PutGridLineColor(RGB(208,208,208));
spGrid1->GetConditionalFormats()->Add(L"%CC0 and %CX0",vtMissing)->PutBold(VARIANT_TRUE);
EXGRIDLib::IConditionalFormatPtr var_ConditionalFormat = spGrid1->GetConditionalFormats()->Add(L"1",vtMissing);
	var_ConditionalFormat->PutBold(VARIANT_TRUE);
	var_ConditionalFormat->PutApplyTo(EXGRIDLib::FormatApplyToEnum(0x2));
EXGRIDLib::IColumnPtr var_Column = ((EXGRIDLib::IColumnPtr)(spGrid1->GetColumns()->Add(L"Description")));
	var_Column->PutDef(EXGRIDLib::exCellHasCheckBox,VARIANT_TRUE);
	var_Column->PutPartialCheck(VARIANT_TRUE);
EXGRIDLib::IColumnPtr var_Column1 = ((EXGRIDLib::IColumnPtr)(spGrid1->GetColumns()->Add(L"Index")));
	var_Column1->PutFormatColumn(L"1 index ``");
	var_Column1->PutPosition(0);
	var_Column1->PutWidth(16);
EXGRIDLib::IColumnPtr var_Column2 = ((EXGRIDLib::IColumnPtr)(spGrid1->GetColumns()->Add(L"Root-Index")));
	var_Column2->PutFormatColumn(L"root(1 index ``)");
	var_Column2->PutPosition(1);
	var_Column2->PutWidth(32);
	var_Column2->PutDef(EXGRIDLib::exCellBackColor,long(15790320));
EXGRIDLib::IColumnPtr var_Column3 = ((EXGRIDLib::IColumnPtr)(spGrid1->GetColumns()->Add(L"Root-Value")));
	var_Column3->PutFormatColumn(L"root(%0)");
	var_Column3->PutPosition(2);
	var_Column3->PutWidth(32);
	var_Column3->PutDef(EXGRIDLib::exCellBackColor,long(15790320));
EXGRIDLib::IItemsPtr var_Items = spGrid1->GetItems();
	long h = var_Items->AddItem("Root 1");
	var_Items->InsertItem(h,vtMissing,"Child 1");
	var_Items->InsertItem(var_Items->InsertItem(h,vtMissing,"Child 2"),vtMissing,"Sub-Child 2");
	var_Items->PutCellState(var_Items->InsertItem(h,vtMissing,"Child 3"),long(0),1);
	var_Items->PutExpandItem(h,VARIANT_TRUE);
	h = var_Items->AddItem("Root 2");
	var_Items->InsertItem(h,vtMissing,"Child 1");
	var_Items->InsertItem(h,vtMissing,"Child 2");
	var_Items->InsertItem(h,vtMissing,"Child 3");
	var_Items->PutExpandItem(h,VARIANT_TRUE);
spGrid1->EndUpdate();

1232
Displays the parent item's index and caption/value using expressions

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

	#import <ExGrid.dll>
	using namespace EXGRIDLib;
*/
EXGRIDLib::IGridPtr spGrid1 = GetDlgItem(IDC_GRID1)->GetControlUnknown();
spGrid1->BeginUpdate();
spGrid1->PutHeaderAppearance(EXGRIDLib::Etched);
spGrid1->PutHeaderHeight(24);
spGrid1->PutLinesAtRoot(EXGRIDLib::exLinesAtRoot);
spGrid1->PutAutoDrag(EXGRIDLib::exAutoDragPositionAny);
spGrid1->PutAllowCopyPaste(EXGRIDLib::AllowCopyPasteEnum(EXGRIDLib::exAllowPaste | EXGRIDLib::exAllowCut | EXGRIDLib::exAllowCopy));
spGrid1->PutSingleSel(VARIANT_FALSE);
spGrid1->PutDrawGridLines(EXGRIDLib::exRowLines);
spGrid1->PutGridLineStyle(EXGRIDLib::exGridLinesSolid);
spGrid1->PutGridLineColor(RGB(208,208,208));
spGrid1->GetConditionalFormats()->Add(L"%CC0 and %CX0",vtMissing)->PutBold(VARIANT_TRUE);
EXGRIDLib::IConditionalFormatPtr var_ConditionalFormat = spGrid1->GetConditionalFormats()->Add(L"1",vtMissing);
	var_ConditionalFormat->PutBold(VARIANT_TRUE);
	var_ConditionalFormat->PutApplyTo(EXGRIDLib::FormatApplyToEnum(0x2));
EXGRIDLib::IColumnPtr var_Column = ((EXGRIDLib::IColumnPtr)(spGrid1->GetColumns()->Add(L"Description")));
	var_Column->PutDef(EXGRIDLib::exCellHasCheckBox,VARIANT_TRUE);
	var_Column->PutPartialCheck(VARIANT_TRUE);
EXGRIDLib::IColumnPtr var_Column1 = ((EXGRIDLib::IColumnPtr)(spGrid1->GetColumns()->Add(L"Index")));
	var_Column1->PutFormatColumn(L"1 index `I`");
	var_Column1->PutPosition(0);
	var_Column1->PutWidth(16);
EXGRIDLib::IColumnPtr var_Column2 = ((EXGRIDLib::IColumnPtr)(spGrid1->GetColumns()->Add(L"Parent-Index")));
	var_Column2->PutFormatColumn(L"parent(1 index `I`)");
	var_Column2->PutPosition(1);
	var_Column2->PutWidth(32);
	var_Column2->PutDef(EXGRIDLib::exCellBackColor,long(15790320));
EXGRIDLib::IColumnPtr var_Column3 = ((EXGRIDLib::IColumnPtr)(spGrid1->GetColumns()->Add(L"Parent-Value")));
	var_Column3->PutFormatColumn(L"parent(%0)");
	var_Column3->PutPosition(2);
	var_Column3->PutWidth(32);
	var_Column3->PutDef(EXGRIDLib::exCellBackColor,long(15790320));
EXGRIDLib::IItemsPtr var_Items = spGrid1->GetItems();
	long h = var_Items->AddItem("Root 1");
	var_Items->InsertItem(h,vtMissing,"Child 1");
	var_Items->InsertItem(var_Items->InsertItem(h,vtMissing,"Child 2"),vtMissing,"Sub-Child 2");
	var_Items->PutCellState(var_Items->InsertItem(h,vtMissing,"Child 3"),long(0),1);
	var_Items->PutExpandItem(h,VARIANT_TRUE);
	h = var_Items->AddItem("Root 2");
	var_Items->InsertItem(h,vtMissing,"Child 1");
	var_Items->InsertItem(h,vtMissing,"Child 2");
	var_Items->InsertItem(h,vtMissing,"Child 3");
	var_Items->PutExpandItem(h,VARIANT_TRUE);
spGrid1->EndUpdate();

1231
Copying and Pasting the Selection Programmatically
/*
	Copy and paste the following directives to your header file as
	it defines the namespace 'EXGRIDLib' for the library: 'ExGrid 1.0 Control Library'

	#import <ExGrid.dll>
	using namespace EXGRIDLib;
*/
EXGRIDLib::IGridPtr spGrid1 = GetDlgItem(IDC_GRID1)->GetControlUnknown();
spGrid1->BeginUpdate();
spGrid1->GetColumns()->Add(L"Tasks");
spGrid1->PutLinesAtRoot(EXGRIDLib::exLinesAtRoot);
spGrid1->PutSingleSel(VARIANT_FALSE);
EXGRIDLib::IItemsPtr var_Items = spGrid1->GetItems();
	var_Items->AddItem("Tasks");
	var_Items->PutSelectItem(var_Items->AddItem("Task 1"),VARIANT_TRUE);
	var_Items->PutSelectItem(var_Items->AddItem("Task 2"),VARIANT_TRUE);
spGrid1->IndentSelection(VARIANT_FALSE);
spGrid1->CopySelection();
spGrid1->GetItems()->UnselectAll();
spGrid1->Paste(vtMissing);
spGrid1->EndUpdate();

1230
Enable Copy, Cut and Paste Clipboard operations
/*
	Copy and paste the following directives to your header file as
	it defines the namespace 'EXGRIDLib' for the library: 'ExGrid 1.0 Control Library'

	#import <ExGrid.dll>
	using namespace EXGRIDLib;
*/
EXGRIDLib::IGridPtr spGrid1 = GetDlgItem(IDC_GRID1)->GetControlUnknown();
spGrid1->BeginUpdate();
spGrid1->GetColumns()->Add(L"Tasks");
spGrid1->PutLinesAtRoot(EXGRIDLib::exLinesAtRoot);
spGrid1->PutAllowCopyPaste(EXGRIDLib::AllowCopyPasteEnum(EXGRIDLib::exAllowPaste | EXGRIDLib::exAllowCut | EXGRIDLib::exAllowCopy));
spGrid1->PutSingleSel(VARIANT_FALSE);
EXGRIDLib::IItemsPtr var_Items = spGrid1->GetItems();
	var_Items->AddItem("Tasks");
	var_Items->PutSelectItem(var_Items->AddItem("Task 1"),VARIANT_TRUE);
	var_Items->PutSelectItem(var_Items->AddItem("Task 2"),VARIANT_TRUE);
spGrid1->IndentSelection(VARIANT_FALSE);
spGrid1->EndUpdate();

1229
Adjusts the hierarchy of selected items by changing their parent

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

	#import <ExGrid.dll>
	using namespace EXGRIDLib;
*/
EXGRIDLib::IGridPtr spGrid1 = GetDlgItem(IDC_GRID1)->GetControlUnknown();
spGrid1->BeginUpdate();
spGrid1->GetColumns()->Add(L"Tasks");
spGrid1->PutLinesAtRoot(EXGRIDLib::exLinesAtRoot);
spGrid1->PutSingleSel(VARIANT_FALSE);
EXGRIDLib::IItemsPtr var_Items = spGrid1->GetItems();
	var_Items->AddItem("Tasks");
	var_Items->PutSelectItem(var_Items->AddItem("Task A"),VARIANT_TRUE);
	var_Items->PutSelectItem(var_Items->AddItem("Task B"),VARIANT_TRUE);
spGrid1->IndentSelection(VARIANT_FALSE);
spGrid1->EndUpdate();

1228
Specify the size of the Columns panel

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

	#import <ExGrid.dll>
	using namespace EXGRIDLib;
*/
EXGRIDLib::IGridPtr spGrid1 = GetDlgItem(IDC_GRID1)->GetControlUnknown();
spGrid1->BeginUpdate();
spGrid1->PutHeaderHeight(24);
spGrid1->PutHeaderAppearance(EXGRIDLib::Etched);
EXGRIDLib::IColumnsPtr var_Columns = spGrid1->GetColumns();
	var_Columns->Add(L"City");
	((EXGRIDLib::IColumnPtr)(var_Columns->Add(L"Start")))->PutVisible(VARIANT_FALSE);
	((EXGRIDLib::IColumnPtr)(var_Columns->Add(L"End")))->PutVisible(VARIANT_FALSE);
spGrid1->PutColumnsFloatBarRect(L",,96");
spGrid1->PutColumnsFloatBarVisible(EXGRIDLib::ColumnsFloatBarVisibleEnum(EXGRIDLib::exColumnsFloatBarVisibleAsChild | EXGRIDLib::exColumnsFloatBarVisibleIncludeCheckColumns));
spGrid1->EndUpdate();

1227
Show a vertical line between pivot and Columns panel (EBN color)

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

	#import <ExGrid.dll>
	using namespace EXGRIDLib;
*/
EXGRIDLib::IGridPtr spGrid1 = GetDlgItem(IDC_GRID1)->GetControlUnknown();
spGrid1->BeginUpdate();
spGrid1->GetVisualAppearance()->Add(1,_bstr_t("gBFLBCJwBAEHhEJAAEhABRsIQAAYAQGKIYBkAKBQAGaAoDDUNQxQwAAxwfBMKgBBCLIxhEYobgmGIXRpFICQTIcBhaGIZRiAKCRTDmHwyRCNIwCLD8QxtDqBY4gOZZX") +
	"hal4cJTgMaBYi+Pw3DZHcbvBRkewzHQAKgnSjoDhEMg1CTVVYTDKdOSzDyEX7sIAACpOIZQVJVEY1VT8cyxIyEZimSypWqiYJ0Ty6cQwTAIgI");
spGrid1->PutBackground(EXGRIDLib::exColumnsFloatBackColor,0x1000000);
spGrid1->PutHeaderHeight(24);
spGrid1->PutHeaderAppearance(EXGRIDLib::Etched);
EXGRIDLib::IColumnsPtr var_Columns = spGrid1->GetColumns();
	var_Columns->Add(L"City");
	((EXGRIDLib::IColumnPtr)(var_Columns->Add(L"Start")))->PutVisible(VARIANT_FALSE);
	((EXGRIDLib::IColumnPtr)(var_Columns->Add(L"End")))->PutVisible(VARIANT_FALSE);
spGrid1->PutColumnsFloatBarVisible(EXGRIDLib::ColumnsFloatBarVisibleEnum(EXGRIDLib::exColumnsFloatBarVisibleAsChild | EXGRIDLib::exColumnsFloatBarVisibleIncludeCheckColumns));
spGrid1->EndUpdate();

1226
Change the background of the Columns panel (EBN color)

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

	#import <ExGrid.dll>
	using namespace EXGRIDLib;
*/
EXGRIDLib::IGridPtr spGrid1 = GetDlgItem(IDC_GRID1)->GetControlUnknown();
spGrid1->BeginUpdate();
spGrid1->GetVisualAppearance()->Add(1,_bstr_t("gBFLBCJwBAEHhEJAAEhABNoCg6AADACAxRDAMgBQKAAzQFAYahqGKGAAGOD4JhUAIIRZGMIjFDcEwxC6NIpAWLoJDCH4mSTHYxgJIMWwzDiBZgkCA4fiGEYnThCIxzT") +
	"J0aw1CKbYRAKCUKoUAJFsSnQAJIgOO4lULPMIhDDQKQTIKBahoehqIhaEQyDSJNb2DCIahhMSEbKtCooDhGFZUWzLVxTJJNawHJqJJDuOTpSjKH4+RjWFKUXR9b4BJSN" +
	"AgqeCQTiSWZEVxRUS0XbGCyZLSQY7uAAMKgOVoDYzdGLwHTtOwrMa1QAsDSbKqWZ5uRpHcQ5aAGN5DPbMbqwOaqLznAaLQLtG4RTikVRPTDYaj437+OaHGyNbI6HTNPp" +
	"TlWDJWjYXI8l8C4fg6GYAAEEISgGJJGHQOocgyIwYnqKhYAAIQTH2MYRjQJBRAmZptmEAYIjGU5dk8UgOFgBJUgCTQIBYBoBmCCAmAqApghgDJUDmYQFCCZoEk2OBUm+" +
	"BZPCgZgagaYZIHYHoHmGWBcm8NwiEiFJVgmYgji4Kg6GKSI2C6C5jAiRgygwIojiycINkyeJmAYPJjkiTg+g+ZAIkCdIQkyWQWDuDxkBkJhKguZAzlIRQzGQc5ODWFJl" +
	"EkVhWhWZYJFYTYTmUE4yF6F5mAmBhihiZhJhYX4WmQaAUnWGpOlmNhuhuZwJkYcocmcSY4naHZlkmKhrDuJ5JnYfofmgCgGgKIJnlmXJ2h4TQKBosRokoNoOiOaQKDSd" +
	"4kmiChMncPBpgoZoaiaaZKHaHonmmE5iiKJRpDicomimaoKiaKoqmqSoeiIPgogqPotiyaxKlYPA+GuCqbBMa5KnaPovmwCwGj6LgP24RIhiyCwmkqMpsksNpKD6LQLB" +
	"qOIzi0SxWlaHZtAOahPssM5Wi+IYtlsXpijKbZ5lyTo5mAE4UlqOpjHOQpEjubyanKPJvEuNgVj2TY1CCao+k2G52AyP5wAwBp9DYZZ1CCaxsAABAEICA");
spGrid1->PutBackground(EXGRIDLib::exColumnsFloatBackColor,0x1000000);
spGrid1->PutHeaderHeight(24);
spGrid1->PutHeaderAppearance(EXGRIDLib::Etched);
EXGRIDLib::IColumnsPtr var_Columns = spGrid1->GetColumns();
	var_Columns->Add(L"City");
	((EXGRIDLib::IColumnPtr)(var_Columns->Add(L"Start")))->PutVisible(VARIANT_FALSE);
	((EXGRIDLib::IColumnPtr)(var_Columns->Add(L"End")))->PutVisible(VARIANT_FALSE);
spGrid1->PutColumnsFloatBarVisible(EXGRIDLib::ColumnsFloatBarVisibleEnum(EXGRIDLib::exColumnsFloatBarVisibleAsChild | EXGRIDLib::exColumnsFloatBarVisibleIncludeCheckColumns));
spGrid1->EndUpdate();

1225
Change the background of the Columns panel (solid color)

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

	#import <ExGrid.dll>
	using namespace EXGRIDLib;
*/
EXGRIDLib::IGridPtr spGrid1 = GetDlgItem(IDC_GRID1)->GetControlUnknown();
spGrid1->BeginUpdate();
spGrid1->PutHeaderHeight(24);
spGrid1->PutHeaderAppearance(EXGRIDLib::Etched);
EXGRIDLib::IColumnsPtr var_Columns = spGrid1->GetColumns();
	var_Columns->Add(L"City");
	((EXGRIDLib::IColumnPtr)(var_Columns->Add(L"Start")))->PutVisible(VARIANT_FALSE);
	((EXGRIDLib::IColumnPtr)(var_Columns->Add(L"End")))->PutVisible(VARIANT_FALSE);
spGrid1->PutColumnsFloatBarVisible(EXGRIDLib::ColumnsFloatBarVisibleEnum(EXGRIDLib::exColumnsFloatBarVisibleAsChild | EXGRIDLib::exColumnsFloatBarVisibleIncludeCheckColumns));
spGrid1->PutBackground(EXGRIDLib::exColumnsFloatBackColor,RGB(240,240,240));
spGrid1->EndUpdate();

1224
Change the visual appearance of the Columns panel

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

	#import <ExGrid.dll>
	using namespace EXGRIDLib;
*/
EXGRIDLib::IGridPtr spGrid1 = GetDlgItem(IDC_GRID1)->GetControlUnknown();
spGrid1->BeginUpdate();
spGrid1->GetVisualAppearance()->Add(1,_bstr_t("gBFLBCJwBAEHhEJAAEhABNoCg6AADACAxRDAMgBQKAAzQFAYahqGKGAAGOD4JhUAIIRZGMIjFDcEwxC6NIpAWLoJDCH4mSTHYxgJIMWwzDiBZgkCA4fiGEYnThCIxzT") +
	"J0aw1CKbYRAKCUKoUAJFsSnQAJIgOO4lULPMIhDDQKQTIKBahoehqIhaEQyDSJNb2DCIahhMSEbKtCooDhGFZUWzLVxTJJNawHJqJJDuOTpSjKH4+RjWFKUXR9b4BJSN" +
	"AgqeCQTiSWZEVxRUS0XbGCyZLSQY7uAAMKgOVoDYzdGLwHTtOwrMa1QAsDSbKqWZ5uRpHcQ5aAGN5DPbMbqwOaqLznAaLQLtG4RTikVRPTDYaj437+OaHGyNbI6HTNPp" +
	"TlWDJWjYXI8l8C4fg6GYAAEEISgGJJGHQOocgyIwYnqKhYAAIQTH2MYRjQJBRAmZptmEAYIjGU5dk8UgOFgBJUgCTQIBYBoBmCCAmAqApghgDJUDmYQFCCZoEk2OBUm+" +
	"BZPCgZgagaYZIHYHoHmGWBcm8NwiEiFJVgmYgji4Kg6GKSI2C6C5jAiRgygwIojiycINkyeJmAYPJjkiTg+g+ZAIkCdIQkyWQWDuDxkBkJhKguZAzlIRQzGQc5ODWFJl" +
	"EkVhWhWZYJFYTYTmUE4yF6F5mAmBhihiZhJhYX4WmQaAUnWGpOlmNhuhuZwJkYcocmcSY4naHZlkmKhrDuJ5JnYfofmgCgGgKIJnlmXJ2h4TQKBosRokoNoOiOaQKDSd" +
	"4kmiChMncPBpgoZoaiaaZKHaHonmmE5iiKJRpDicomimaoKiaKoqmqSoeiIPgogqPotiyaxKlYPA+GuCqbBMa5KnaPovmwCwGj6LgP24RIhiyCwmkqMpsksNpKD6LQLB" +
	"qOIzi0SxWlaHZtAOahPssM5Wi+IYtlsXpijKbZ5lyTo5mAE4UlqOpjHOQpEjubyanKPJvEuNgVj2TY1CCao+k2G52AyP5wAwBp9DYZZ1CCaxsAABAEICA");
spGrid1->PutBackground(EXGRIDLib::exColumnsFloatAppearance,0x1000000);
spGrid1->PutBackground(EXGRIDLib::exColumnsFloatCaptionBackColor,RGB(246,246,246));
spGrid1->PutBackColorHeader(0x1000000);
spGrid1->PutHeaderHeight(24);
spGrid1->PutHeaderAppearance(EXGRIDLib::Etched);
EXGRIDLib::IColumnsPtr var_Columns = spGrid1->GetColumns();
	var_Columns->Add(L"City");
	((EXGRIDLib::IColumnPtr)(var_Columns->Add(L"Start")))->PutVisible(VARIANT_FALSE);
	((EXGRIDLib::IColumnPtr)(var_Columns->Add(L"End")))->PutVisible(VARIANT_FALSE);
spGrid1->PutDescription(EXGRIDLib::exColumnsFloatBar,L"Show/Hide");
spGrid1->PutColumnsFloatBarVisible(EXGRIDLib::exColumnsFloatBarVisibleIncludeCheckColumns);
spGrid1->EndUpdate();

1223
Defines the symbol used to indicate repeated captions, providing a clear visual cue for identical entries (ditto mark)

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

	#import <ExGrid.dll>
	using namespace EXGRIDLib;
*/
EXGRIDLib::IGridPtr spGrid1 = GetDlgItem(IDC_GRID1)->GetControlUnknown();
spGrid1->BeginUpdate();
spGrid1->PutHeaderAppearance(EXGRIDLib::Etched);
spGrid1->PutHeaderHeight(24);
spGrid1->PutDrawGridLines(EXGRIDLib::exRowLines);
((EXGRIDLib::IColumnPtr)(spGrid1->GetColumns()->Add(L"Country")))->PutShowIdem(L"<fgcolor gray>〃");
EXGRIDLib::IItemsPtr var_Items = spGrid1->GetItems();
	var_Items->AddItem("Spain");
	var_Items->AddItem("Spain");
	var_Items->AddItem("Spain");
	var_Items->AddItem("Spain");
	var_Items->AddItem("Germany");
	var_Items->AddItem("Germany");
	var_Items->AddItem("Germany");
	var_Items->AddItem("Germany");
spGrid1->EndUpdate();

1222
Defines the symbol used to indicate repeated captions, providing a clear visual cue for identical entries (space)

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

	#import <ExGrid.dll>
	using namespace EXGRIDLib;
*/
EXGRIDLib::IGridPtr spGrid1 = GetDlgItem(IDC_GRID1)->GetControlUnknown();
spGrid1->BeginUpdate();
spGrid1->PutHeaderAppearance(EXGRIDLib::Etched);
spGrid1->PutHeaderHeight(24);
spGrid1->PutDrawGridLines(EXGRIDLib::exRowLines);
((EXGRIDLib::IColumnPtr)(spGrid1->GetColumns()->Add(L"Country")))->PutShowIdem(L" ");
EXGRIDLib::IItemsPtr var_Items = spGrid1->GetItems();
	var_Items->AddItem("Spain");
	var_Items->AddItem("Spain");
	var_Items->AddItem("Spain");
	var_Items->AddItem("Spain");
	var_Items->AddItem("Germany");
	var_Items->AddItem("Germany");
	var_Items->AddItem("Germany");
	var_Items->AddItem("Germany");
spGrid1->EndUpdate();

1221
Displays a glitch funnel for drop-down filter buttons (empty or active)

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

	#import <ExGrid.dll>
	using namespace EXGRIDLib;
*/
EXGRIDLib::IGridPtr spGrid1 = GetDlgItem(IDC_GRID1)->GetControlUnknown();
spGrid1->BeginUpdate();
EXGRIDLib::IAppearancePtr var_Appearance = spGrid1->GetVisualAppearance();
	var_Appearance->PutRenderType(-1);
	var_Appearance->Add(1,_bstr_t("gBFLBCJwBAEHhEJAAEhABa8IQAAYAQGKIYBkAKBQAGaAoDDUNQxQwAAxwfBMKgBBCLIxhEYobgmGIXRpFMbxCKQahLEiTIhGUYJHgmK4tRiAUgxVDkBxrECZYqjcBZO") +
	"iwLQ2TxDM7DNKUCBnIoABhGOaYDh+IQNQjUFKwTRFGRxK4EIRKAyTDLQdRyGSMMbjdQpBCbMiMRqhESKRq2UwYRYCFS1NalaztO6BUAvK67YrWez/YBfF+SfwGeqDYRe" +
	"WAPfgWERnQrGMLxbD8KwZAKTRjkGJ4XhuB41TbQMqufL9ByXHKSSDpGjaXjeO5VVjYNAvS69UzXNq3bhtQAOXCMEwCgI=");
	var_Appearance->Add(2,"CP:1 -2 0 0 0");
spGrid1->PutDrawGridLines(EXGRIDLib::exAllLines);
spGrid1->PutGridLineStyle(EXGRIDLib::exGridLinesGeometric);
spGrid1->PutShowFocusRect(VARIANT_FALSE);
spGrid1->PutBackground(EXGRIDLib::exHeaderFilterBarButton,0x2000000);
spGrid1->PutBackground(EXGRIDLib::exHeaderFilterBarActive,0x2000001);
spGrid1->PutHeaderAppearance(EXGRIDLib::Etched);
spGrid1->PutBackColorHeader(RGB(255,255,255));
spGrid1->PutHeaderHeight(24);
spGrid1->PutHeaderVisible(VARIANT_TRUE);
EXGRIDLib::IColumnPtr var_Column = ((EXGRIDLib::IColumnPtr)(spGrid1->GetColumns()->Add(L"1st col")));
	var_Column->PutDisplayFilterButton(VARIANT_TRUE);
	var_Column->PutDisplayFilterPattern(VARIANT_FALSE);
	var_Column->PutFilter(L"Item B");
	var_Column->PutFilterType(EXGRIDLib::exFilter);
spGrid1->GetColumns()->Add(L"2nd col");
EXGRIDLib::IItemsPtr var_Items = spGrid1->GetItems();
	var_Items->AddItem("Item A");
	var_Items->AddItem("Item B");
	var_Items->AddItem("Item C");
spGrid1->ApplyFilter();
spGrid1->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 OnButtonClickGrid1(long   Item, long   ColIndex, VARIANT   Key)
{
	/*
		Copy and paste the following directives to your header file as
		it defines the namespace 'EXGRIDLib' for the library: 'ExGrid 1.0 Control Library'
		#import <ExGrid.dll>
		using namespace EXGRIDLib;
	*/
	EXGRIDLib::IGridPtr spGrid1 = GetDlgItem(IDC_GRID1)->GetControlUnknown();
	OutputDebugStringW( _bstr_t(spGrid1->GetItems()->GetCellData(Item,ColIndex)) );
}

EXGRIDLib::IGridPtr spGrid1 = GetDlgItem(IDC_GRID1)->GetControlUnknown();
spGrid1->BeginUpdate();
spGrid1->PutHeaderAppearance(EXGRIDLib::Etched);
EXGRIDLib::IEditorPtr var_Editor = ((EXGRIDLib::IColumnPtr)(spGrid1->GetColumns()->Add(L"Def")))->GetEditor();
	var_Editor->PutEditType(EXGRIDLib::ButtonType);
	var_Editor->PutLocked(VARIANT_TRUE);
EXGRIDLib::IItemsPtr var_Items = spGrid1->GetItems();
	var_Items->PutCellData(var_Items->AddItem("Cell 1"),long(0),"your extra data for cell 1");
	var_Items->PutCellData(var_Items->AddItem("Cell 2"),long(0),"your extra data for cell 2");
spGrid1->EndUpdate();

1219
How can I replace or add an icon at runtime

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

	#import <ExGrid.dll>
	using namespace EXGRIDLib;
*/
EXGRIDLib::IGridPtr spGrid1 = GetDlgItem(IDC_GRID1)->GetControlUnknown();
spGrid1->BeginUpdate();
spGrid1->ReplaceIcon(_bstr_t("gAAAABgYACEHgUJFEEAAWhUJCEJEEJggEhMCYEXjUbjkJQECj8gj8hAEjkshYEpk8kf8ClsulsvAExmcvf83js5nU7nkCeEcn8boMaocXosCB9Hn09pkzcEuoL/fE+O") +
	"kYB0gB9YhIHrddgVcr9aktZADAD8+P8CgIA==",vtMissing);
spGrid1->ReplaceIcon("C:\\images\\favicon.ico",long(0));
((EXGRIDLib::IColumnPtr)(spGrid1->GetColumns()->Add(L"Items")))->PutDef(EXGRIDLib::exCellValueFormat,long(1));
spGrid1->GetItems()->AddItem("Item <img>1</img>");
spGrid1->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 OnClickGrid1()
{
	/*
		Copy and paste the following directives to your header file as
		it defines the namespace 'EXGRIDLib' for the library: 'ExGrid 1.0 Control Library'
		#import <ExGrid.dll>
		using namespace EXGRIDLib;
	*/
	EXGRIDLib::IGridPtr spGrid1 = GetDlgItem(IDC_GRID1)->GetControlUnknown();
	spGrid1->PutLayout(L"Select=\"0\";SingleSort=\"C0:2\";Columns=1");
}

EXGRIDLib::IGridPtr spGrid1 = GetDlgItem(IDC_GRID1)->GetControlUnknown();
spGrid1->BeginUpdate();
spGrid1->GetColumns()->Add(L"Column");
EXGRIDLib::IItemsPtr var_Items = spGrid1->GetItems();
	var_Items->AddItem("Item 1");
	var_Items->AddItem("Item 2");
	var_Items->AddItem("Item 3");
spGrid1->EndUpdate();

1217
How can I add totals to groups without having to go through the AddGroupItem grid function

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

	#import <ExGrid.dll>
	using namespace EXGRIDLib;
*/
EXGRIDLib::IGridPtr spGrid1 = GetDlgItem(IDC_GRID1)->GetControlUnknown();
spGrid1->FreezeEvents(VARIANT_TRUE);
spGrid1->BeginUpdate();
spGrid1->PutHeaderAppearance(EXGRIDLib::Etched);
spGrid1->PutHeaderHeight(24);
spGrid1->PutLinesAtRoot(EXGRIDLib::exLinesAtRoot);
EXGRIDLib::IConditionalFormatsPtr var_ConditionalFormats = spGrid1->GetConditionalFormats();
	EXGRIDLib::IConditionalFormatPtr var_ConditionalFormat = var_ConditionalFormats->Add(L"%CT1",vtMissing);
		var_ConditionalFormat->PutForeColor(RGB(128,128,128));
		var_ConditionalFormat->PutApplyTo(EXGRIDLib::FormatApplyToEnum(0x1));
	EXGRIDLib::IConditionalFormatPtr var_ConditionalFormat1 = var_ConditionalFormats->Add(L"%CT2",vtMissing);
		var_ConditionalFormat1->PutForeColor(RGB(128,128,128));
		var_ConditionalFormat1->PutApplyTo(EXGRIDLib::FormatApplyToEnum(0x2));
	EXGRIDLib::IConditionalFormatPtr var_ConditionalFormat2 = var_ConditionalFormats->Add(L"%CT3",vtMissing);
		var_ConditionalFormat2->PutForeColor(RGB(128,128,128));
		var_ConditionalFormat2->PutApplyTo(EXGRIDLib::FormatApplyToEnum(0x3));
EXGRIDLib::IColumnsPtr var_Columns = spGrid1->GetColumns();
	var_Columns->Add(L"Description");
	EXGRIDLib::IColumnPtr var_Column = ((EXGRIDLib::IColumnPtr)(var_Columns->Add(L"Qty")));
		var_Column->GetEditor()->PutEditType(EXGRIDLib::SpinType);
		var_Column->PutDef(EXGRIDLib::exTotalColumn,"sum(current,rec,%1)");
	EXGRIDLib::IColumnPtr var_Column1 = ((EXGRIDLib::IColumnPtr)(var_Columns->Add(L"Price")));
		var_Column1->PutDef(EXGRIDLib::exTotalColumn,"avg(current,rec,%2)");
		var_Column1->GetEditor()->PutEditType(EXGRIDLib::SpinType);
	EXGRIDLib::IColumnPtr var_Column2 = ((EXGRIDLib::IColumnPtr)(var_Columns->Add(L"Amount")));
		var_Column2->PutComputedField(L"%1 * %2");
		var_Column2->PutDef(EXGRIDLib::exTotalColumn,"sum(current,rec,%3)");
EXGRIDLib::IItemsPtr var_Items = spGrid1->GetItems();
	long r = var_Items->AddItem("Root");
	long g1 = var_Items->InsertItem(r,vtMissing,"Group 1");
	long h = var_Items->InsertItem(g1,vtMissing,"Item 1");
	var_Items->PutCellValue(h,long(1),long(1));
	var_Items->PutCellValue(h,long(2),long(10));
	h = var_Items->InsertItem(g1,vtMissing,"Item 2");
	var_Items->PutCellValue(h,long(1),long(2));
	var_Items->PutCellValue(h,long(2),long(11));
	long g2 = var_Items->InsertItem(r,vtMissing,"Group 2");
	h = var_Items->InsertItem(g2,vtMissing,"Item 1");
	var_Items->PutCellValue(h,long(1),long(3));
	var_Items->PutCellValue(h,long(2),long(12));
	h = var_Items->InsertItem(g2,vtMissing,"Item 2");
	var_Items->PutCellValue(h,long(1),long(4));
	var_Items->PutCellValue(h,long(2),long(13));
	var_Items->PutExpandItem(0,VARIANT_TRUE);
spGrid1->EndUpdate();
spGrid1->FreezeEvents(VARIANT_FALSE);

1216
How can I configure the filters in the text columns to search by content

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

	#import <ExGrid.dll>
	using namespace EXGRIDLib;
*/
EXGRIDLib::IGridPtr spGrid1 = GetDlgItem(IDC_GRID1)->GetControlUnknown();
spGrid1->BeginUpdate();
spGrid1->PutFilterBarPromptVisible(EXGRIDLib::exFilterBarPromptVisible);
spGrid1->PutHeaderAppearance(EXGRIDLib::None2);
spGrid1->PutFilterBarPromptType(EXGRIDLib::exFilterPromptContainsAll);
spGrid1->GetColumns()->Add(L"Names");
EXGRIDLib::IItemsPtr var_Items = spGrid1->GetItems();
	var_Items->AddItem("Mantel");
	var_Items->AddItem("Mechanik");
	var_Items->AddItem("Motor");
	var_Items->AddItem("Murks");
	var_Items->AddItem("Märchen");
	var_Items->AddItem("Möhren");
	var_Items->AddItem("Mühle");
	var_Items->AddItem("Sérigraphie");
spGrid1->PutFilterBarPromptPattern(L"a");
spGrid1->EndUpdate();

1215
How can I display the control's captions in Spanish

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

	#import <ExGrid.dll>
	using namespace EXGRIDLib;
*/
EXGRIDLib::IGridPtr spGrid1 = GetDlgItem(IDC_GRID1)->GetControlUnknown();
spGrid1->BeginUpdate();
spGrid1->PutFilterBarPromptVisible(EXGRIDLib::exFilterBarPromptVisible);
spGrid1->PutHeaderAppearance(EXGRIDLib::None2);
spGrid1->PutDescription(EXGRIDLib::exFilterBarAll,L"(todo) ");
spGrid1->PutDescription(EXGRIDLib::exFilterBarFilterForCaption,L"filtrar por...");
spGrid1->PutFilterBarPrompt(L"<i><fgcolor=808080>iniciar filtro...</fgcolor></i>");
EXGRIDLib::IColumnPtr var_Column = ((EXGRIDLib::IColumnPtr)(spGrid1->GetColumns()->Add(L"Names")));
	var_Column->PutDisplayFilterButton(VARIANT_TRUE);
	var_Column->PutFilterType(EXGRIDLib::exPattern);
EXGRIDLib::IItemsPtr var_Items = spGrid1->GetItems();
	var_Items->AddItem("Mantel");
	var_Items->AddItem("Mechanik");
	var_Items->AddItem("Motor");
	var_Items->AddItem("Murks");
	var_Items->AddItem("Märchen");
	var_Items->AddItem("Möhren");
	var_Items->AddItem("Mühle");
	var_Items->AddItem("Sérigraphie");
spGrid1->EndUpdate();

1214
How can I zoom in the control

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

	#import <ExGrid.dll>
	using namespace EXGRIDLib;
*/
EXGRIDLib::IGridPtr spGrid1 = GetDlgItem(IDC_GRID1)->GetControlUnknown();
spGrid1->BeginUpdate();
_bstr_t s1 = 16;
_variant_t s2 = spGrid1->FormatABC(L"2 * value",s1,vtMissing,vtMissing);
spGrid1->PutImageSize(s2);
spGrid1->PutDefaultItemHeight(s2);
spGrid1->PutHeaderHeight(s2);
spGrid1->PutSortBarHeight(s2);
spGrid1->PutIndent(s2);
spGrid1->GetFont()->PutSize(_variant_t(s1));
spGrid1->GetFilterBarFont()->PutSize(_variant_t(s1));
spGrid1->GetToolTipFont()->PutSize(_variant_t(s1));
spGrid1->PutFilterBarPromptVisible(EXGRIDLib::exFilterBarPromptVisible);
spGrid1->PutHeaderAppearance(EXGRIDLib::None2);
EXGRIDLib::IColumnPtr var_Column = ((EXGRIDLib::IColumnPtr)(spGrid1->GetColumns()->Add(L"Names")));
	var_Column->PutDisplayFilterButton(VARIANT_TRUE);
	var_Column->PutFilterType(EXGRIDLib::exPattern);
EXGRIDLib::IItemsPtr var_Items = spGrid1->GetItems();
	var_Items->AddItem("Mantel");
	var_Items->AddItem("Mechanik");
	var_Items->AddItem("Motor");
	var_Items->AddItem("Murks");
	var_Items->AddItem("Märchen");
	var_Items->AddItem("Möhren");
	var_Items->AddItem("Mühle");
	var_Items->AddItem("Sérigraphie");
spGrid1->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

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

	#import <ExGrid.dll>
	using namespace EXGRIDLib;
*/
EXGRIDLib::IGridPtr spGrid1 = GetDlgItem(IDC_GRID1)->GetControlUnknown();
spGrid1->BeginUpdate();
spGrid1->PutHeaderAppearance(EXGRIDLib::Etched);
spGrid1->PutHeaderHeight(24);
spGrid1->PutLinesAtRoot(EXGRIDLib::exLinesAtRoot);
EXGRIDLib::IColumnPtr var_Column = ((EXGRIDLib::IColumnPtr)(spGrid1->GetColumns()->Add(L"Items")));
	var_Column->PutDisplayFilterButton(VARIANT_TRUE);
	var_Column->PutDisplayFilterPattern(VARIANT_TRUE);
	var_Column->PutDef(EXGRIDLib::exFilterPatternTemplate,"*<%filter%>*");
	var_Column->PutFilterType(EXGRIDLib::exPattern);
	var_Column->PutFilter(L"1");
EXGRIDLib::IItemsPtr var_Items = spGrid1->GetItems();
	long h = var_Items->AddItem("Root 1");
	var_Items->InsertItem(h,vtMissing,"Child 1");
	var_Items->InsertItem(h,vtMissing,"Child 2");
	var_Items->PutExpandItem(h,VARIANT_TRUE);
	h = var_Items->AddItem("Root 2");
	var_Items->InsertItem(h,vtMissing,"Child 1");
	var_Items->InsertItem(h,vtMissing,"Child 2");
spGrid1->ApplyFilter();
spGrid1->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

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

	#import <ExGrid.dll>
	using namespace EXGRIDLib;
*/
EXGRIDLib::IGridPtr spGrid1 = GetDlgItem(IDC_GRID1)->GetControlUnknown();
spGrid1->BeginUpdate();
spGrid1->PutHeaderAppearance(EXGRIDLib::Etched);
spGrid1->PutHeaderHeight(24);
spGrid1->PutDrawGridLines(EXGRIDLib::exAllLines);
spGrid1->PutGridLineStyle(EXGRIDLib::exGridLinesGeometric);
spGrid1->PutColumnAutoResize(VARIANT_FALSE);
spGrid1->GetColumns()->Add(L"Column 1");
spGrid1->GetColumns()->Add(L"Column 2");
spGrid1->GetColumns()->Add(L"Column 3");
spGrid1->GetColumns()->Add(L"Column 4");
spGrid1->EndUpdate();

1211
Load data as a tree using a parent-id relationship

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

	#import <ExGrid.dll>
	using namespace EXGRIDLib;
*/
EXGRIDLib::IGridPtr spGrid1 = GetDlgItem(IDC_GRID1)->GetControlUnknown();
spGrid1->BeginUpdate();
spGrid1->PutColumnAutoResize(VARIANT_FALSE);
spGrid1->PutHeaderAppearance(EXGRIDLib::Etched);
spGrid1->PutHeaderHeight(24);
spGrid1->PutDrawGridLines(EXGRIDLib::exVLines);
spGrid1->PutLinesAtRoot(EXGRIDLib::exLinesAtRoot);
/*
	Includes the definition for CreateObject function like follows:

	#include <comdef.h>
	IUnknownPtr CreateObject( BSTR Object )
	{
		IUnknownPtr spResult;
		spResult.CreateInstance( Object );
		return spResult;
	};

*/
/*
	Copy and paste the following directives to your header file as
	it defines the namespace 'ADODB' for the library: 'Microsoft ActiveX Data Objects 6.1 Library'

	#import <msado15.dll> rename("EOF","REOF")
*/
ADODB::_RecordsetPtr rs = ::CreateObject(L"ADODB.Recordset");
	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",ADODB::adOpenStatic,ADODB::adLockOptimistic,0);
spGrid1->PutDataSource(((ADODB::_RecordsetPtr)(rs)));
spGrid1->GetColumns()->GetItem(long(0))->PutWidth(128);
rs = ::CreateObject(L"ADODB.Recordset");
	rs->Open("Employees","Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\\Program Files\\Exontrol\\ExGrid\\Sample\\Access\\misc.mdb",ADODB::adOpenStatic,ADODB::adLockOptimistic,0);
spGrid1->PutItems(rs->GetRows(0,vtMissing,vtMissing),";0;17");
spGrid1->GetItems()->PutExpandItem(0,VARIANT_TRUE);
spGrid1->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 OnAddItemGrid1(long   Item)
{
	/*
		Copy and paste the following directives to your header file as
		it defines the namespace 'EXGRIDLib' for the library: 'ExGrid 1.0 Control Library'
		#import <ExGrid.dll>
		using namespace EXGRIDLib;
	*/
	EXGRIDLib::IGridPtr spGrid1 = GetDlgItem(IDC_GRID1)->GetControlUnknown();
	spGrid1->GetItems()->PutCellEditorVisible(Item,long(0),EXGRIDLib::exEditorVisible);
	spGrid1->GetItems()->PutCellEditorVisible(Item,long(1),EXGRIDLib::exEditorVisible);
}

// EditOpen event - Occurs when the edit operation starts.
void OnEditOpenGrid1()
{
	EXGRIDLib::IGridPtr spGrid1 = GetDlgItem(IDC_GRID1)->GetControlUnknown();
	EXGRIDLib::IItemsPtr var_Items = spGrid1->GetItems();
		_variant_t v = var_Items->GetCellValue(var_Items->GetFocusItem(),long(0));
		_bstr_t c = var_Items->GetCellCaption(var_Items->GetFocusItem(),long(0));
	EXGRIDLib::IEditorPtr var_Editor = spGrid1->GetColumns()->GetItem(long(1))->GetEditor();
		var_Editor->ClearItems();
		var_Editor->AddItem(v,L"c",vtMissing);
}

EXGRIDLib::IGridPtr spGrid1 = GetDlgItem(IDC_GRID1)->GetControlUnknown();
spGrid1->BeginUpdate();
spGrid1->PutHeaderAppearance(EXGRIDLib::Etched);
spGrid1->PutHeaderHeight(24);
spGrid1->PutGridLineStyle(EXGRIDLib::exGridLinesGeometric);
EXGRIDLib::IColumnPtr var_Column = ((EXGRIDLib::IColumnPtr)(spGrid1->GetColumns()->Add(L"DropDownList")));
	EXGRIDLib::IEditorPtr var_Editor = var_Column->GetEditor();
		var_Editor->PutEditType(EXGRIDLib::DropDownListType);
		var_Editor->AddItem(1,L"First",vtMissing);
		var_Editor->AddItem(2,L"Second",vtMissing);
		var_Editor->AddItem(3,L"Third",vtMissing);
spGrid1->PutDrawGridLines(EXGRIDLib::exAllLines);
((EXGRIDLib::IColumnPtr)(spGrid1->GetColumns()->Add(L"DropDownList-Related")))->GetEditor()->PutEditType(EXGRIDLib::DropDownListType);
EXGRIDLib::IItemsPtr var_Items = spGrid1->GetItems();
	var_Items->PutCellValue(var_Items->AddItem(long(1)),long(1),long(-1));
	var_Items->PutCellValue(var_Items->AddItem(long(2)),long(1),long(-1));
	var_Items->PutCellValue(var_Items->AddItem(long(3)),long(1),long(-1));
	var_Items->PutLockedItemCount(EXGRIDLib::exBottom,1);
	long h = var_Items->GetLockedItem(EXGRIDLib::exBottom,0);
	var_Items->PutItemDivider(h,0);
	var_Items->PutItemDividerLineAlignment(h,EXGRIDLib::DividerTop);
	var_Items->PutCellEditorVisible(h,long(0),EXGRIDLib::exEditorHidden);
	var_Items->PutCellSingleLine(h,long(0),EXGRIDLib::exCaptionWordWrap);
	var_Items->PutCellValueFormat(h,long(0),EXGRIDLib::exHTML);
	var_Items->PutCellValue(h,long(0),_bstr_t("The drop down editor in the second column is filled during the <b>EditOpen event</b>, and the values are based on the selection") +
	" on the first column.");
spGrid1->EndUpdate();

1209
Highlight the editable fields

// Change event - Occurs when the user changes the cell's content.
void OnChangeGrid1(long   Item, long   ColIndex, VARIANT FAR*   NewValue)
{
	/*
		Copy and paste the following directives to your header file as
		it defines the namespace 'EXGRIDLib' for the library: 'ExGrid 1.0 Control Library'
		#import <ExGrid.dll>
		using namespace EXGRIDLib;
	*/
	EXGRIDLib::IGridPtr spGrid1 = GetDlgItem(IDC_GRID1)->GetControlUnknown();
	spGrid1->Refresh();
}

EXGRIDLib::IGridPtr spGrid1 = GetDlgItem(IDC_GRID1)->GetControlUnknown();
spGrid1->FreezeEvents(VARIANT_TRUE);
spGrid1->BeginUpdate();
spGrid1->PutHeaderAppearance(EXGRIDLib::Etched);
spGrid1->PutHeaderHeight(24);
spGrid1->PutLinesAtRoot(EXGRIDLib::exLinesAtRoot);
EXGRIDLib::IConditionalFormatsPtr var_ConditionalFormats = spGrid1->GetConditionalFormats();
	EXGRIDLib::IConditionalFormatPtr var_ConditionalFormat = var_ConditionalFormats->Add(L"%CE1",vtMissing);
		var_ConditionalFormat->PutBold(VARIANT_TRUE);
		var_ConditionalFormat->PutBackColor(RGB(245,245,245));
		var_ConditionalFormat->PutApplyTo(EXGRIDLib::FormatApplyToEnum(0x1));
	EXGRIDLib::IConditionalFormatPtr var_ConditionalFormat1 = var_ConditionalFormats->Add(L"%CE2",vtMissing);
		var_ConditionalFormat1->PutBold(VARIANT_TRUE);
		var_ConditionalFormat1->PutBackColor(RGB(245,245,245));
		var_ConditionalFormat1->PutApplyTo(EXGRIDLib::FormatApplyToEnum(0x2));
	EXGRIDLib::IConditionalFormatPtr var_ConditionalFormat2 = var_ConditionalFormats->Add(L"%CE3",vtMissing);
		var_ConditionalFormat2->PutBold(VARIANT_TRUE);
		var_ConditionalFormat2->PutBackColor(RGB(245,245,245));
		var_ConditionalFormat2->PutApplyTo(EXGRIDLib::FormatApplyToEnum(0x3));
EXGRIDLib::IColumnsPtr var_Columns = spGrid1->GetColumns();
	var_Columns->Add(L"Description");
	EXGRIDLib::IColumnPtr var_Column = ((EXGRIDLib::IColumnPtr)(var_Columns->Add(L"Qty")));
		var_Column->GetEditor()->PutEditType(EXGRIDLib::SpinType);
		var_Column->PutDef(EXGRIDLib::exTotalColumn,"sum(current,rec,%1)");
	EXGRIDLib::IColumnPtr var_Column1 = ((EXGRIDLib::IColumnPtr)(var_Columns->Add(L"Price")));
		var_Column1->PutDef(EXGRIDLib::exTotalColumn,"avg(current,rec,%2)");
		var_Column1->GetEditor()->PutEditType(EXGRIDLib::SpinType);
	EXGRIDLib::IColumnPtr var_Column2 = ((EXGRIDLib::IColumnPtr)(var_Columns->Add(L"Amount")));
		var_Column2->PutComputedField(L"%1 * %2");
		var_Column2->PutDef(EXGRIDLib::exTotalColumn,"sum(current,rec,%3)");
EXGRIDLib::IItemsPtr var_Items = spGrid1->GetItems();
	long r = var_Items->AddItem("Root");
	long g1 = var_Items->InsertItem(r,vtMissing,"Group 1");
	long h = var_Items->InsertItem(g1,vtMissing,"Item 1");
	var_Items->PutCellValue(h,long(1),long(1));
	var_Items->PutCellValue(h,long(2),long(10));
	h = var_Items->InsertItem(g1,vtMissing,"Item 2");
	var_Items->PutCellValue(h,long(1),long(2));
	var_Items->PutCellValue(h,long(2),long(11));
	long g2 = var_Items->InsertItem(r,vtMissing,"Group 2");
	h = var_Items->InsertItem(g2,vtMissing,"Item 1");
	var_Items->PutCellValue(h,long(1),long(3));
	var_Items->PutCellValue(h,long(2),long(12));
	h = var_Items->InsertItem(g2,vtMissing,"Item 2");
	var_Items->PutCellValue(h,long(1),long(4));
	var_Items->PutCellValue(h,long(2),long(13));
	var_Items->PutExpandItem(0,VARIANT_TRUE);
spGrid1->EndUpdate();
spGrid1->FreezeEvents(VARIANT_FALSE);

1208
Highlight the total fields

// Change event - Occurs when the user changes the cell's content.
void OnChangeGrid1(long   Item, long   ColIndex, VARIANT FAR*   NewValue)
{
	/*
		Copy and paste the following directives to your header file as
		it defines the namespace 'EXGRIDLib' for the library: 'ExGrid 1.0 Control Library'
		#import <ExGrid.dll>
		using namespace EXGRIDLib;
	*/
	EXGRIDLib::IGridPtr spGrid1 = GetDlgItem(IDC_GRID1)->GetControlUnknown();
	spGrid1->Refresh();
}

EXGRIDLib::IGridPtr spGrid1 = GetDlgItem(IDC_GRID1)->GetControlUnknown();
spGrid1->FreezeEvents(VARIANT_TRUE);
spGrid1->BeginUpdate();
spGrid1->PutHeaderAppearance(EXGRIDLib::Etched);
spGrid1->PutHeaderHeight(24);
spGrid1->PutLinesAtRoot(EXGRIDLib::exLinesAtRoot);
EXGRIDLib::IConditionalFormatsPtr var_ConditionalFormats = spGrid1->GetConditionalFormats();
	EXGRIDLib::IConditionalFormatPtr var_ConditionalFormat = var_ConditionalFormats->Add(L"%CT1",vtMissing);
		var_ConditionalFormat->PutForeColor(RGB(128,128,128));
		var_ConditionalFormat->PutApplyTo(EXGRIDLib::FormatApplyToEnum(0x1));
	EXGRIDLib::IConditionalFormatPtr var_ConditionalFormat1 = var_ConditionalFormats->Add(L"%CT2",vtMissing);
		var_ConditionalFormat1->PutForeColor(RGB(128,128,128));
		var_ConditionalFormat1->PutApplyTo(EXGRIDLib::FormatApplyToEnum(0x2));
	EXGRIDLib::IConditionalFormatPtr var_ConditionalFormat2 = var_ConditionalFormats->Add(L"%CT3",vtMissing);
		var_ConditionalFormat2->PutForeColor(RGB(128,128,128));
		var_ConditionalFormat2->PutApplyTo(EXGRIDLib::FormatApplyToEnum(0x3));
EXGRIDLib::IColumnsPtr var_Columns = spGrid1->GetColumns();
	var_Columns->Add(L"Description");
	EXGRIDLib::IColumnPtr var_Column = ((EXGRIDLib::IColumnPtr)(var_Columns->Add(L"Qty")));
		var_Column->GetEditor()->PutEditType(EXGRIDLib::SpinType);
		var_Column->PutDef(EXGRIDLib::exTotalColumn,"sum(current,rec,%1)");
	EXGRIDLib::IColumnPtr var_Column1 = ((EXGRIDLib::IColumnPtr)(var_Columns->Add(L"Price")));
		var_Column1->PutDef(EXGRIDLib::exTotalColumn,"avg(current,rec,%2)");
		var_Column1->GetEditor()->PutEditType(EXGRIDLib::SpinType);
	EXGRIDLib::IColumnPtr var_Column2 = ((EXGRIDLib::IColumnPtr)(var_Columns->Add(L"Amount")));
		var_Column2->PutComputedField(L"%1 * %2");
		var_Column2->PutDef(EXGRIDLib::exTotalColumn,"sum(current,rec,%3)");
EXGRIDLib::IItemsPtr var_Items = spGrid1->GetItems();
	long r = var_Items->AddItem("Root");
	long g1 = var_Items->InsertItem(r,vtMissing,"Group 1");
	long h = var_Items->InsertItem(g1,vtMissing,"Item 1");
	var_Items->PutCellValue(h,long(1),long(1));
	var_Items->PutCellValue(h,long(2),long(10));
	h = var_Items->InsertItem(g1,vtMissing,"Item 2");
	var_Items->PutCellValue(h,long(1),long(2));
	var_Items->PutCellValue(h,long(2),long(11));
	long g2 = var_Items->InsertItem(r,vtMissing,"Group 2");
	h = var_Items->InsertItem(g2,vtMissing,"Item 1");
	var_Items->PutCellValue(h,long(1),long(3));
	var_Items->PutCellValue(h,long(2),long(12));
	h = var_Items->InsertItem(g2,vtMissing,"Item 2");
	var_Items->PutCellValue(h,long(1),long(4));
	var_Items->PutCellValue(h,long(2),long(13));
	var_Items->PutExpandItem(0,VARIANT_TRUE);
spGrid1->EndUpdate();
spGrid1->FreezeEvents(VARIANT_FALSE);

1207
Highlight the leaf items

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

	#import <ExGrid.dll>
	using namespace EXGRIDLib;
*/
EXGRIDLib::IGridPtr spGrid1 = GetDlgItem(IDC_GRID1)->GetControlUnknown();
spGrid1->BeginUpdate();
spGrid1->GetConditionalFormats()->Add(L"%CC0=0",vtMissing)->PutForeColor(RGB(128,128,128));
spGrid1->PutHeaderAppearance(EXGRIDLib::Etched);
spGrid1->PutHeaderHeight(24);
spGrid1->PutLinesAtRoot(EXGRIDLib::exLinesAtRoot);
EXGRIDLib::IColumnsPtr var_Columns = spGrid1->GetColumns();
	((EXGRIDLib::IColumnPtr)(var_Columns->Add(L"Item")))->PutWidth(16);
	var_Columns->Add(L"Desc");
EXGRIDLib::IItemsPtr var_Items = spGrid1->GetItems();
	long hR = var_Items->AddItem("Root");
	var_Items->PutCellValue(hR,long(1),"The root directory /");
	var_Items->PutExpandItem(hR,VARIANT_TRUE);
	long h = var_Items->InsertItem(hR,vtMissing,"Home");
	var_Items->PutCellValue(h,long(1),"The home directory with user directories Alice and Bob");
	var_Items->InsertItem(h,vtMissing,"Alice");
	var_Items->InsertItem(h,vtMissing,"Bob");
	var_Items->PutExpandItem(h,VARIANT_TRUE);
	h = var_Items->InsertItem(hR,vtMissing,"Etc");
	var_Items->PutCellValue(h,long(1),"The etc directory with one configuration file");
	h = var_Items->InsertItem(h,vtMissing,"nginx.conf");
	var_Items->PutCellValue(var_Items->InsertItem(hR,vtMissing,"Var"),long(1),"The var directory");
spGrid1->EndUpdate();

1206
Highlight the parent items

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

	#import <ExGrid.dll>
	using namespace EXGRIDLib;
*/
EXGRIDLib::IGridPtr spGrid1 = GetDlgItem(IDC_GRID1)->GetControlUnknown();
spGrid1->BeginUpdate();
spGrid1->GetConditionalFormats()->Add(L"%CC0",vtMissing)->PutForeColor(RGB(255,0,0));
spGrid1->PutHeaderAppearance(EXGRIDLib::Etched);
spGrid1->PutHeaderHeight(24);
spGrid1->PutLinesAtRoot(EXGRIDLib::exLinesAtRoot);
EXGRIDLib::IColumnsPtr var_Columns = spGrid1->GetColumns();
	((EXGRIDLib::IColumnPtr)(var_Columns->Add(L"Item")))->PutWidth(16);
	var_Columns->Add(L"Desc");
EXGRIDLib::IItemsPtr var_Items = spGrid1->GetItems();
	long hR = var_Items->AddItem("Root");
	var_Items->PutCellValue(hR,long(1),"The root directory /");
	var_Items->PutExpandItem(hR,VARIANT_TRUE);
	long h = var_Items->InsertItem(hR,vtMissing,"Home");
	var_Items->PutCellValue(h,long(1),"The home directory with user directories Alice and Bob");
	var_Items->InsertItem(h,vtMissing,"Alice");
	var_Items->InsertItem(h,vtMissing,"Bob");
	var_Items->PutExpandItem(h,VARIANT_TRUE);
	h = var_Items->InsertItem(hR,vtMissing,"Etc");
	var_Items->PutCellValue(h,long(1),"The etc directory with one configuration file");
	h = var_Items->InsertItem(h,vtMissing,"nginx.conf");
	var_Items->PutCellValue(var_Items->InsertItem(hR,vtMissing,"Var"),long(1),"The var directory");
spGrid1->EndUpdate();

1205
Highlight the item being expanded or collapsed

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

	#import <ExGrid.dll>
	using namespace EXGRIDLib;
*/
EXGRIDLib::IGridPtr spGrid1 = GetDlgItem(IDC_GRID1)->GetControlUnknown();
spGrid1->BeginUpdate();
spGrid1->GetConditionalFormats()->Add(L"%CX0",vtMissing)->PutBold(VARIANT_TRUE);
spGrid1->PutHeaderAppearance(EXGRIDLib::Etched);
spGrid1->PutHeaderHeight(24);
spGrid1->PutLinesAtRoot(EXGRIDLib::exLinesAtRoot);
EXGRIDLib::IColumnsPtr var_Columns = spGrid1->GetColumns();
	((EXGRIDLib::IColumnPtr)(var_Columns->Add(L"Item")))->PutWidth(16);
	var_Columns->Add(L"Desc");
EXGRIDLib::IItemsPtr var_Items = spGrid1->GetItems();
	long hR = var_Items->AddItem("Root");
	var_Items->PutCellValue(hR,long(1),"The root directory /");
	var_Items->PutExpandItem(hR,VARIANT_TRUE);
	long h = var_Items->InsertItem(hR,vtMissing,"Home");
	var_Items->PutCellValue(h,long(1),"The home directory with user directories Alice and Bob");
	var_Items->InsertItem(h,vtMissing,"Alice");
	var_Items->InsertItem(h,vtMissing,"Bob");
	var_Items->PutExpandItem(h,VARIANT_TRUE);
	h = var_Items->InsertItem(hR,vtMissing,"Etc");
	var_Items->PutCellValue(h,long(1),"The etc directory with one configuration file");
	h = var_Items->InsertItem(h,vtMissing,"nginx.conf");
	var_Items->PutCellValue(var_Items->InsertItem(hR,vtMissing,"Var"),long(1),"The var directory");
spGrid1->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 OnChangeGrid1(long   Item, long   ColIndex, VARIANT FAR*   NewValue)
{
	/*
		Copy and paste the following directives to your header file as
		it defines the namespace 'EXGRIDLib' for the library: 'ExGrid 1.0 Control Library'
		#import <ExGrid.dll>
		using namespace EXGRIDLib;
	*/
	EXGRIDLib::IGridPtr spGrid1 = GetDlgItem(IDC_GRID1)->GetControlUnknown();
	spGrid1->Refresh();
}

EXGRIDLib::IGridPtr spGrid1 = GetDlgItem(IDC_GRID1)->GetControlUnknown();
spGrid1->FreezeEvents(VARIANT_TRUE);
spGrid1->BeginUpdate();
spGrid1->PutHeaderAppearance(EXGRIDLib::Etched);
spGrid1->PutHeaderHeight(24);
spGrid1->PutLinesAtRoot(EXGRIDLib::exLinesAtRoot);
EXGRIDLib::IColumnsPtr var_Columns = spGrid1->GetColumns();
	var_Columns->Add(L"Description");
	EXGRIDLib::IColumnPtr var_Column = ((EXGRIDLib::IColumnPtr)(var_Columns->Add(L"Qty")));
		var_Column->GetEditor()->PutEditType(EXGRIDLib::SpinType);
		var_Column->PutDef(EXGRIDLib::exTotalColumn,"sum(current,rec,%1)");
	EXGRIDLib::IColumnPtr var_Column1 = ((EXGRIDLib::IColumnPtr)(var_Columns->Add(L"Price")));
		var_Column1->PutDef(EXGRIDLib::exTotalColumn,"avg(current,rec,%2)");
		var_Column1->GetEditor()->PutEditType(EXGRIDLib::SpinType);
	EXGRIDLib::IColumnPtr var_Column2 = ((EXGRIDLib::IColumnPtr)(var_Columns->Add(L"Amount")));
		var_Column2->PutComputedField(L"%1 * %2");
		var_Column2->PutDef(EXGRIDLib::exTotalColumn,"sum(current,rec,%3)");
EXGRIDLib::IItemsPtr var_Items = spGrid1->GetItems();
	long r = var_Items->AddItem("Root");
	long g1 = var_Items->InsertItem(r,vtMissing,"Group 1");
	var_Items->PutFormatCell(g1,long(2),L"`<average missing>`");
	var_Items->PutCellEditorVisible(g1,long(2),EXGRIDLib::exEditorHidden);
	var_Items->PutCellBold(g1,long(2),VARIANT_TRUE);
	var_Items->PutCellForeColor(g1,long(2),RGB(255,0,0));
	long h = var_Items->InsertItem(g1,vtMissing,"Item 1");
	var_Items->PutCellValue(h,long(1),long(1));
	var_Items->PutCellValue(h,long(2),long(10));
	h = var_Items->InsertItem(g1,vtMissing,"Item 2");
	var_Items->PutCellValue(h,long(1),long(2));
	var_Items->PutCellValue(h,long(2),long(11));
	long g2 = var_Items->InsertItem(r,vtMissing,"Group 2");
	h = var_Items->InsertItem(g2,vtMissing,"Item 1");
	var_Items->PutCellValue(h,long(1),long(3));
	var_Items->PutCellValue(h,long(2),long(12));
	h = var_Items->InsertItem(g2,vtMissing,"Item 2");
	var_Items->PutCellValue(h,long(1),long(4));
	var_Items->PutCellValue(h,long(2),long(13));
	var_Items->PutExpandItem(0,VARIANT_TRUE);
spGrid1->EndUpdate();
spGrid1->FreezeEvents(VARIANT_FALSE);

1203
How can I add a total column

// Change event - Occurs when the user changes the cell's content.
void OnChangeGrid1(long   Item, long   ColIndex, VARIANT FAR*   NewValue)
{
	/*
		Copy and paste the following directives to your header file as
		it defines the namespace 'EXGRIDLib' for the library: 'ExGrid 1.0 Control Library'
		#import <ExGrid.dll>
		using namespace EXGRIDLib;
	*/
	EXGRIDLib::IGridPtr spGrid1 = GetDlgItem(IDC_GRID1)->GetControlUnknown();
	spGrid1->Refresh();
}

EXGRIDLib::IGridPtr spGrid1 = GetDlgItem(IDC_GRID1)->GetControlUnknown();
spGrid1->FreezeEvents(VARIANT_TRUE);
spGrid1->BeginUpdate();
spGrid1->PutHeaderAppearance(EXGRIDLib::Etched);
spGrid1->PutHeaderHeight(24);
spGrid1->PutLinesAtRoot(EXGRIDLib::exLinesAtRoot);
EXGRIDLib::IColumnsPtr var_Columns = spGrid1->GetColumns();
	var_Columns->Add(L"Description");
	EXGRIDLib::IColumnPtr var_Column = ((EXGRIDLib::IColumnPtr)(var_Columns->Add(L"Qty")));
		var_Column->GetEditor()->PutEditType(EXGRIDLib::SpinType);
		var_Column->PutDef(EXGRIDLib::exTotalColumn,"sum(current,rec,%1)");
	EXGRIDLib::IColumnPtr var_Column1 = ((EXGRIDLib::IColumnPtr)(var_Columns->Add(L"Price")));
		var_Column1->PutDef(EXGRIDLib::exTotalColumn,"avg(current,rec,%2)");
		var_Column1->GetEditor()->PutEditType(EXGRIDLib::SpinType);
	EXGRIDLib::IColumnPtr var_Column2 = ((EXGRIDLib::IColumnPtr)(var_Columns->Add(L"Amount")));
		var_Column2->PutComputedField(L"%1 * %2");
		var_Column2->PutDef(EXGRIDLib::exTotalColumn,"sum(current,rec,%3)");
EXGRIDLib::IItemsPtr var_Items = spGrid1->GetItems();
	long r = var_Items->AddItem("Root");
	long g1 = var_Items->InsertItem(r,vtMissing,"Group 1");
	long h = var_Items->InsertItem(g1,vtMissing,"Item 1");
	var_Items->PutCellValue(h,long(1),long(1));
	var_Items->PutCellValue(h,long(2),long(10));
	h = var_Items->InsertItem(g1,vtMissing,"Item 2");
	var_Items->PutCellValue(h,long(1),long(2));
	var_Items->PutCellValue(h,long(2),long(11));
	long g2 = var_Items->InsertItem(r,vtMissing,"Group 2");
	h = var_Items->InsertItem(g2,vtMissing,"Item 1");
	var_Items->PutCellValue(h,long(1),long(3));
	var_Items->PutCellValue(h,long(2),long(12));
	h = var_Items->InsertItem(g2,vtMissing,"Item 2");
	var_Items->PutCellValue(h,long(1),long(4));
	var_Items->PutCellValue(h,long(2),long(13));
	var_Items->PutExpandItem(0,VARIANT_TRUE);
spGrid1->EndUpdate();
spGrid1->FreezeEvents(VARIANT_FALSE);

1202
Is it possible to disable sizing(size) the column
/*
	Copy and paste the following directives to your header file as
	it defines the namespace 'EXGRIDLib' for the library: 'ExGrid 1.0 Control Library'

	#import <ExGrid.dll>
	using namespace EXGRIDLib;
*/
EXGRIDLib::IGridPtr spGrid1 = GetDlgItem(IDC_GRID1)->GetControlUnknown();
spGrid1->BeginUpdate();
spGrid1->PutHeaderAppearance(EXGRIDLib::Etched);
spGrid1->PutDrawGridLines(EXGRIDLib::exVLines);
EXGRIDLib::IColumnPtr var_Column = ((EXGRIDLib::IColumnPtr)(spGrid1->GetColumns()->Add(L"32px")));
	var_Column->PutWidth(32);
	var_Column->PutAllowSizing(VARIANT_FALSE);
spGrid1->GetColumns()->Add(L"Rest");
spGrid1->PutColumnAutoResize(VARIANT_TRUE);
spGrid1->EndUpdate();

1201
How can I add two columns of 25% and the third of 50%

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

	#import <ExGrid.dll>
	using namespace EXGRIDLib;
*/
EXGRIDLib::IGridPtr spGrid1 = GetDlgItem(IDC_GRID1)->GetControlUnknown();
spGrid1->BeginUpdate();
spGrid1->PutHeaderAppearance(EXGRIDLib::Etched);
spGrid1->PutDrawGridLines(EXGRIDLib::exVLines);
((EXGRIDLib::IColumnPtr)(spGrid1->GetColumns()->Add(L"25%")))->PutWidth(25);
((EXGRIDLib::IColumnPtr)(spGrid1->GetColumns()->Add(L"25%")))->PutWidth(25);
((EXGRIDLib::IColumnPtr)(spGrid1->GetColumns()->Add(L"50%")))->PutWidth(50);
spGrid1->PutColumnAutoResize(VARIANT_TRUE);
spGrid1->EndUpdate();