| 
	1269
   | 
  
	  Hoist an item, promoting it and all its visible children to the top level 
	
		
			
with AxGrid1 do
begin
	BeginUpdate();
	LinesAtRoot := EXGRIDLib.LinesAtRootEnum.exLinesAtRoot;
	with (Columns.Add('P1') as EXGRIDLib.Column) do
	begin
		Def[EXGRIDLib.DefColumnEnum.exCellHasCheckBox] := TObject(True);
		PartialCheck := True;
	end;
	with (Columns.Add('P2') as EXGRIDLib.Column) do
	begin
		Def[EXGRIDLib.DefColumnEnum.exCellHasCheckBox] := TObject(True);
		PartialCheck := True;
	end;
	with Items do
	begin
		h1 := AddItem('Root 1');
		InsertItem(h1,Nil,'Child 1');
		InsertItem(h1,Nil,'Child 2');
		ExpandItem[h1] := True;
		h2 := AddItem('Root 2');
		InsertItem(h2,Nil,'Child 1');
		InsertItem(h2,Nil,'Child 2');
		HoistItem := h1;
	end;
	EndUpdate();
end
			 
		 
	 
   | 
  | 
	1268
   | 
  
	  Generates a PDF document on a single A0 page with no margins 
	
		
			
with AxGrid1 do
begin
	BeginUpdate();
	LoadXML('C:\Program Files\Exontrol\ExGrid\Sample\XML\data.xml');
	ColumnAutoResize := False;
	EndUpdate();
	var_CopyTo := get_CopyTo('c:/temp/sample.pdf|33.11 in x 46.81 in|0 0 0 0|single');
end
			 
		 
	 
   | 
  | 
	1267
   | 
  
	  Generates a PDF document that scales the content proportionally by 75% using B3 pages (default margins) 
	
		
			
with AxGrid1 do
begin
	BeginUpdate();
	LoadXML('C:\Program Files\Exontrol\ExGrid\Sample\XML\data.xml');
	ColumnAutoResize := False;
	EndUpdate();
	var_CopyTo := get_CopyTo('c:/temp/sample.pdf|6.93 in x 9.84 in||75%');
end
			 
		 
	 
   | 
  | 
	1266
   | 
  
	  Generates a PDF document that fits the content exactly to 3 A4 pages wide by 2 pages tall (default margins) 
	
		
			
with AxGrid1 do
begin
	BeginUpdate();
	LoadXML('C:\Program Files\Exontrol\ExGrid\Sample\XML\data.xml');
	ColumnAutoResize := False;
	EndUpdate();
	var_CopyTo := get_CopyTo('c:/temp/sample.pdf|||3 x 2f');
end
			 
		 
	 
   | 
  | 
	1265
   | 
  
	  Generates a PDF document that fits the content to 3 A3-landscape pages wide by 2 pages tall (custom margins) 
	
		
			
with AxGrid1 do
begin
	BeginUpdate();
	LoadXML('C:\Program Files\Exontrol\ExGrid\Sample\XML\data.xml');
	ColumnAutoResize := False;
	EndUpdate();
	var_CopyTo := get_CopyTo('c:/temp/sample.pdf|16.54 in x 11.69 in|5 mm 5 mm 5 mm 5 mm|3 x 2');
end
			 
		 
	 
   | 
  | 
	1264
   | 
  
	  Generates a PDF document that fits the content to 2 Letter pages tall, automatically determining the number of pages wide (default margins) 
	
		
			
with AxGrid1 do
begin
	BeginUpdate();
	LoadXML('C:\Program Files\Exontrol\ExGrid\Sample\XML\data.xml');
	ColumnAutoResize := False;
	EndUpdate();
	var_CopyTo := get_CopyTo('c:/temp/sample.pdf|8.50 in x 11.00 in||x 2');
end
			 
		 
	 
   | 
  | 
	1263
   | 
  
	  Generates a PDF document that fits the content to 1 page wide and as many A4 pages tall as required (default margins) 
	
		
			
with AxGrid1 do
begin
	BeginUpdate();
	LoadXML('C:\Program Files\Exontrol\ExGrid\Sample\XML\data.xml');
	ColumnAutoResize := False;
	EndUpdate();
	var_CopyTo := get_CopyTo('c:/temp/sample.pdf|||1 x');
end
			 
		 
	 
   | 
  | 
	1262
   | 
  
	  Generates a PDF document on a single A4 page (default margins) 
	
		
			
with AxGrid1 do
begin
	BeginUpdate();
	LoadXML('C:\Program Files\Exontrol\ExGrid\Sample\XML\data.xml');
	ColumnAutoResize := False;
	EndUpdate();
	var_CopyTo := get_CopyTo('c:/temp/sample.pdf|||single');
end
			 
		 
	 
   | 
  | 
	1261
   | 
  
	  Mask for Floating-Point Numbers (Emglish Style: . as Decimal, , as Grouping Separator) 
	
		
			
 
 
with AxGrid1 do
begin
	BeginUpdate();
	HeaderAppearance := EXGRIDLib.AppearanceEnum.Etched;
	HeaderHeight := 24;
	DrawGridLines := EXGRIDLib.GridLinesEnum.exRowLines;
	GridLineStyle := EXGRIDLib.GridLinesStyleEnum.exGridLinesSolid;
	SelForeColor := ForeColor;
	SelBackColor := BackColor;
	ShowFocusRect := False;
	with (Columns.Add('Float(English-style)') as EXGRIDLib.Column) do
	begin
		SortType := EXGRIDLib.SortTypeEnum.SortNumeric;
		FormatColumn := 'value format `3`';
		HeaderAlignment := EXGRIDLib.AlignmentEnum.RightAlignment;
		Alignment := EXGRIDLib.AlignmentEnum.RightAlignment;
		with Editor do
		begin
			EditType := EXGRIDLib.EditTypeEnum.MaskType;
			Mask := '!999,999,990.000;;;float,right,negative,grouping=\,,decimal=.';
		end;
	end;
	with Items do
	begin
		AddItem(TObject(192278.12));
		AddItem(TObject(2829.7));
		AddItem(TObject(7391.55));
		AddItem(TObject(50812.23));
		AddItem(TObject(913.04));
		AddItem(TObject(127500.88));
		AddItem(TObject(62.19));
		AddItem(TObject(1));
	end;
	EndUpdate();
end
			 
		 
	 
   | 
  | 
	1260
   | 
  
	  Mask for Floating-Point Numbers (German Style: , as Decimal, . as Grouping Separator) 
	
		
			
 
 
with AxGrid1 do
begin
	BeginUpdate();
	HeaderAppearance := EXGRIDLib.AppearanceEnum.Etched;
	HeaderHeight := 24;
	DrawGridLines := EXGRIDLib.GridLinesEnum.exRowLines;
	GridLineStyle := EXGRIDLib.GridLinesStyleEnum.exGridLinesSolid;
	SelForeColor := ForeColor;
	SelBackColor := BackColor;
	ShowFocusRect := False;
	with (Columns.Add('Float(German-style)') as EXGRIDLib.Column) do
	begin
		SortType := EXGRIDLib.SortTypeEnum.SortNumeric;
		FormatColumn := 'value format `3`';
		HeaderAlignment := EXGRIDLib.AlignmentEnum.RightAlignment;
		Alignment := EXGRIDLib.AlignmentEnum.RightAlignment;
		with Editor do
		begin
			EditType := EXGRIDLib.EditTypeEnum.MaskType;
			Mask := '!999.999.990,000;;;float,right,grouping=.,decimal=\,';
		end;
	end;
	with Items do
	begin
		AddItem(TObject(192278.12));
		AddItem(TObject(2829.7));
		AddItem(TObject(7391.55));
		AddItem(TObject(50812.23));
		AddItem(TObject(913.04));
		AddItem(TObject(127500.88));
		AddItem(TObject(62.19));
		AddItem(TObject(1));
	end;
	EndUpdate();
end
			 
		 
	 
   | 
  | 
	1259
   | 
  
	  Locks the first visible column on the left and the last visible column on the right 
	
		
			
 
 
with AxGrid1 do
begin
	BeginUpdate();
	ColumnAutoResize := False;
	BackColorLock := Color.FromArgb(192,192,192);
	GridLineStyle := EXGRIDLib.GridLinesStyleEnum.exGridLinesSolid;
	DrawGridLines := EXGRIDLib.GridLinesEnum.exVLines;
	HeaderAppearance := EXGRIDLib.AppearanceEnum.Etched;
	rs := (ComObj.CreateComObject(ComObj.ProgIDToClassID('ADOR.Recordset')) as ADODB.Recordset);
	with rs do
	begin
		Open('Orders','Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Program Files\Exontrol\ExGrid\Sample\Access\misc.mdb',3,3,Nil);
	end;
	DataSource := (rs as ADODB.Recordset);
	CountLockedColumns := 17;
	EndUpdate();
end
			 
		 
	 
   | 
  | 
	1258
   | 
  
	  Lock the column on the right 
	
		
			
 
 
with AxGrid1 do
begin
	BeginUpdate();
	ColumnAutoResize := False;
	BackColorLock := Color.FromArgb(192,192,192);
	GridLineStyle := EXGRIDLib.GridLinesStyleEnum.exGridLinesSolid;
	DrawGridLines := EXGRIDLib.GridLinesEnum.exVLines;
	HeaderAppearance := EXGRIDLib.AppearanceEnum.Etched;
	rs := (ComObj.CreateComObject(ComObj.ProgIDToClassID('ADOR.Recordset')) as ADODB.Recordset);
	with rs do
	begin
		Open('Orders','Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Program Files\Exontrol\ExGrid\Sample\Access\misc.mdb',3,3,Nil);
	end;
	DataSource := (rs as ADODB.Recordset);
	CountLockedColumns := 16;
	EndUpdate();
end
			 
		 
	 
   | 
  | 
	1257
   | 
  
	  Lock the column on the left 
	
		
			
 
 
with AxGrid1 do
begin
	BeginUpdate();
	ColumnAutoResize := False;
	BackColorLock := Color.FromArgb(192,192,192);
	GridLineStyle := EXGRIDLib.GridLinesStyleEnum.exGridLinesSolid;
	DrawGridLines := EXGRIDLib.GridLinesEnum.exVLines;
	HeaderAppearance := EXGRIDLib.AppearanceEnum.Etched;
	rs := (ComObj.CreateComObject(ComObj.ProgIDToClassID('ADOR.Recordset')) as ADODB.Recordset);
	with rs do
	begin
		Open('Orders','Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Program Files\Exontrol\ExGrid\Sample\Access\misc.mdb',3,3,Nil);
	end;
	DataSource := (rs as ADODB.Recordset);
	CountLockedColumns := 1;
	EndUpdate();
end
			 
		 
	 
   | 
  | 
	1256
   | 
  
	  Update the item's lock state - pinning it to the top, bottom, or making it scrollable 
	
		
			
 
 
with AxGrid1 do
begin
	BeginUpdate();
	Columns.Add('Column');
	with Items do
	begin
		AddItem('un-locked item');
		LockItem[AddItem('top-locked item')] := EXGRIDLib.LockItemEnum.exLockTop;
		LockItem[AddItem('bottom-locked item')] := EXGRIDLib.LockItemEnum.exLockBottom;
	end;
	EndUpdate();
end
			 
		 
	 
   | 
  | 
	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.
procedure TWinForm1.AxGrid1_Changed(sender: System.Object; e: AxEXGRIDLib._IGridEvents_ChangedEvent);
begin
	with AxGrid1 do
	begin
		OutputDebugString( Items.CellValue[TObject(e.item),TObject(e.colIndex)] );
	end
end;
with AxGrid1 do
begin
	BeginUpdate();
	(Columns.Add('Edit') as EXGRIDLib.Column).Editor.EditType := EXGRIDLib.EditTypeEnum.EditType;
	Items.AddItem('Item 1');
	Items.AddItem('Item 2');
	EndUpdate();
end
			 
		 
	 
   | 
  | 
	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.
procedure TWinForm1.AxGrid1_AnchorClick(sender: System.Object; e: AxEXGRIDLib._IGridEvents_AnchorClickEvent);
begin
	with AxGrid1 do
	begin
		i := FormatABC('int(value)',TObject(e.anchorID),Nil,Nil);
		with Items do
		begin
			i := ItemByIndex[i];
			exp := ExpandItem[i];
			ExpandItem[i] := False;
		end;
	end
end;
with AxGrid1 do
begin
	BeginUpdate();
	set_HTMLPicture('expand','gCJKBOI4NBQaBQAhQNJJIIhShQACERCAIA0RD7zf5hiIBOZSI5CACuZwcdMRAhnIJNIMKWKPBb8MIFiIJOBILJzhQOYc7YYBY5vVBkiIYOhFLB0KZvMx0O5hORlABQMJ' + 
	'pNx0FxOIpUEA1FwxFw3RbWe45iK2MpYJJmJJJFQABERmgaAM0AMRJURDd1AF3hUQhQoAIDvsRAURGIBw8ThRaiJpQ4EwsKNURyxgjsRzEKv1TqtXrNbrtfsIAwgASAHA' + 
	'GShQwGQzGABUGEzudAqgyWdSmWw2Fw+sABSHI4AGH1XAGAxGAwywlI6eRqjGi1YuaJJEIJUHBPYqSJYKQAwCBDKbBPbncBibrUKQjGLFQo+TBFfR5GaUAR/KbGICyRxs' + 
	'iCOQClgdJxGoMpkGycpdDqUZ0EoJQJHYVoWCSCA4kEbRlHKRwJiYcYCH0PBNB2JwYCaCRsGcE8LDyfZKg+U59EsAZMlQCgJkcEA9CsywkiKJwiFcIQwEEgI=');
	set_HTMLPicture('collapse','gCJKBOI4NBQaBQAhQNJJIIhShQACERCAIA0RD7zf5hiIBOZSI5CACuZwcdMRAhnIJNIMKWKPBb8MIFiIJOBILJzhQOYU7YQBCooJSAiIYOhFLB0KZvMx0O5hORlABQMJ' + 
	'pNx0FxOIpUEA1FwxFw3RbWe45iK2MpYJJmJJJFQABERmgaAM0AMRJURDd1AF3hUQhQoAIDvsRAURGIBw8ThRaiJpQ4EwsKNURyzyO13dGEAGYzWcqlWrFarlesA3AGcS' + 
	'AHAGShQwGQzGABUGEv2TAAFUGS26Uy2GwuH1wAKQ5HAAw+s4YwGIwGGWISpVLiXT5MrxiJyJJEIJUHBPYqSXYOQAgBgAB6jJwufxxX7YYhdYhFCSsSwSC4uMLoQajNJA' + 
	'G8QgZAgSIqGMCwRBkAJDicGwuiMeoHGeaRFlAU5qDwQQ6A+CYnlgPQeisGJfl4AJYhsRISjQYwJHIcpmmALAtlMEpkE4YBREmEpPBAARdicSw8AES5fi+fI5g+PpcAAU' + 
	'JKgyCYknaZRrssJIiicIhXCEMBBICA==');
	set_HTMLPicture('empty','gCJKBOI4NBQaBQAhQNJJIIhShQACERCAIA0RD7zf5hiIBOZSI5CACuZwcdMRAhnIJNIMKWKPBb8MIFiIJOBILJzhQOYE7YABNTWRIJiIYOhFLB0KZvMx0O5hORlABQMJ' + 
	'pNx0FxOIpUEA1FwxFw3RbWe45iK2MpYJJmJJJFQABERmgaAM0AMRJURDd1AF3hUQhQoAIDvsRAURGIBw8ThRaiJpQ4EwsKNURyy/O13dGEAGYzWcqlWrFarlesA3AGcS' + 
	'AHAGShQwGQzGABUGEv2TAAFUGS26Uy2GwuH1wAKQ5HAAw+s4YwGIwGGWYSvDpndpkQ9xhRTJJEIJUHBPdqSGIKYAwBgDUpCfytH57FqoVaTKQTGS0DJ6cDBDzOGwIfAN' + 
	'HMIxJDmf5CFIAxwA4Q5HEQVJlEWRxnBkMANjsPoqBSEAElkfZ5CMFJMHCC52BALBGjkDpHCuXIAB2bQdEGaQgFIbbLCSIonCIVwhDAQSAg==');
	HeaderVisible := False;
	HasLines := EXGRIDLib.HierarchyLineEnum.exNoLine;
	HasButtons := EXGRIDLib.ExpandButtonEnum.exNoButtons;
	Indent := 12;
	DefaultItemHeight := 24;
	DrawGridLines := EXGRIDLib.GridLinesEnum.exHLines;
	GridLineStyle := EXGRIDLib.GridLinesStyleEnum.exGridLinesSolid;
	GridLineColor := Color.FromArgb(204,204,204);
	ShowFocusRect := False;
	ExpandOnDblClick := False;
	ExpandOnKeys := False;
	with Columns do
	begin
		with (Add('Item') as EXGRIDLib.Column) do
		begin
			Def[EXGRIDLib.DefColumnEnum.exCellValueFormat] := TObject(1);
			FormatColumn := '(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>`) : ``)) : ``) + ` ` + valu' + 
	'e';
			with Editor do
			begin
				EditType := EXGRIDLib.EditTypeEnum.EditType;
				Option[EXGRIDLib.EditorOptionEnum.exEditorAdjustPos] := '32 4 -4 -4';
			end;
		end;
	end;
	with Items do
	begin
		hRoot := AddItem('ACME Corporation');
		SelectableItem[hRoot] := False;
		ExpandItem[hRoot] := True;
		h := InsertItem(hRoot,Nil,'Management');
		InsertItem(h,Nil,'CEO - Alice Brown');
		InsertItem(h,Nil,'COO - James Lee');
		h := InsertItem(hRoot,Nil,'HR Department');
		InsertItem(h,Nil,'Recruiter - Jane Smith');
		InsertItem(h,Nil,'HR Assistant - Bob Green');
		ExpandItem[h] := True;
		h := InsertItem(h,Nil,'Engineering');
		InsertItem(h,Nil,'Software Team');
		h := InsertItem(h,Nil,'Lead Developer - Mark H.');
		InsertItem(h,Nil,'Frontend Dev - Emily R.');
		InsertItem(h,Nil,'Backend Dev - Tom W.');
		InsertItem(hRoot,Nil,'QA Team');
	end;
	EndUpdate();
end
			 
		 
	 
   | 
  | 
	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.
procedure TWinForm1.AxGrid1_AnchorClick(sender: System.Object; e: AxEXGRIDLib._IGridEvents_AnchorClickEvent);
begin
	with AxGrid1 do
	begin
		i := FormatABC('int(value)',TObject(e.anchorID),Nil,Nil);
		with Items do
		begin
			i := ItemByIndex[i];
			exp := ExpandItem[i];
			ExpandItem[i] := False;
		end;
	end
end;
with AxGrid1 do
begin
	BeginUpdate();
	set_HTMLPicture('expand','gCJKBOI4NBQaBQAhQNJJIIhShQACERCAIA0RD7zf5hiIBOZSI5CACuZwcdMRAhnIJNIMKWKPBb8MIFiIJOBILJzhQOYc7YYBY5vVBkiIYOhFLB0KZvMx0O5hORlABQMJ' + 
	'pNx0FxOIpUEA1FwxFw3RbWe45iK2MpYJJmJJJFQABERmgaAM0AMRJURDd1AF3hUQhQoAIDvsRAURGIBw8ThRaiJpQ4EwsKNURyxgjsRzEKv1TqtXrNbrtfsIAwgASAHA' + 
	'GShQwGQzGABUGEzudAqgyWdSmWw2Fw+sABSHI4AGH1XAGAxGAwywlI6eRqjGi1YuaJJEIJUHBPYqSJYKQAwCBDKbBPbncBibrUKQjGLFQo+TBFfR5GaUAR/KbGICyRxs' + 
	'iCOQClgdJxGoMpkGycpdDqUZ0EoJQJHYVoWCSCA4kEbRlHKRwJiYcYCH0PBNB2JwYCaCRsGcE8LDyfZKg+U59EsAZMlQCgJkcEA9CsywkiKJwiFcIQwEEgI=');
	set_HTMLPicture('collapse','gCJKBOI4NBQaBQAhQNJJIIhShQACERCAIA0RD7zf5hiIBOZSI5CACuZwcdMRAhnIJNIMKWKPBb8MIFiIJOBILJzhQOYU7YQBCooJSAiIYOhFLB0KZvMx0O5hORlABQMJ' + 
	'pNx0FxOIpUEA1FwxFw3RbWe45iK2MpYJJmJJJFQABERmgaAM0AMRJURDd1AF3hUQhQoAIDvsRAURGIBw8ThRaiJpQ4EwsKNURyzyO13dGEAGYzWcqlWrFarlesA3AGcS' + 
	'AHAGShQwGQzGABUGEv2TAAFUGS26Uy2GwuH1wAKQ5HAAw+s4YwGIwGGWISpVLiXT5MrxiJyJJEIJUHBPYqSXYOQAgBgAB6jJwufxxX7YYhdYhFCSsSwSC4uMLoQajNJA' + 
	'G8QgZAgSIqGMCwRBkAJDicGwuiMeoHGeaRFlAU5qDwQQ6A+CYnlgPQeisGJfl4AJYhsRISjQYwJHIcpmmALAtlMEpkE4YBREmEpPBAARdicSw8AES5fi+fI5g+PpcAAU' + 
	'JKgyCYknaZRrssJIiicIhXCEMBBICA==');
	HeaderVisible := False;
	HasLines := EXGRIDLib.HierarchyLineEnum.exNoLine;
	HasButtons := EXGRIDLib.ExpandButtonEnum.exNoButtons;
	Indent := 12;
	DefaultItemHeight := 24;
	DrawGridLines := EXGRIDLib.GridLinesEnum.exHLines;
	GridLineStyle := EXGRIDLib.GridLinesStyleEnum.exGridLinesSolid;
	GridLineColor := Color.FromArgb(204,204,204);
	ShowFocusRect := False;
	ExpandOnDblClick := False;
	ExpandOnKeys := False;
	with Columns do
	begin
		with (Add('Item') as EXGRIDLib.Column) do
		begin
			Def[EXGRIDLib.DefColumnEnum.exCellValueFormat] := TObject(1);
			FormatColumn := '(len(parent(1 index ``)) ? (`<b><fgcolor gray>` + (1 pos ``) + `. ` + `</fgcolor></b>` + `<a ` + (0 index ``) + `><img>` + (%CC0' + 
	' ? (not %CX0 ? `expand` : `collapse`) : ``) + `:16</img></a>`) : ``) + ` ` + value';
		end;
	end;
	with Items do
	begin
		hRoot := AddItem('ACME Corporation');
		SelectableItem[hRoot] := False;
		ExpandItem[hRoot] := True;
		h := InsertItem(hRoot,Nil,'Management');
		InsertItem(h,Nil,'CEO - Alice Brown');
		InsertItem(h,Nil,'COO - James Lee');
		h := InsertItem(hRoot,Nil,'HR Department');
		InsertItem(h,Nil,'Recruiter - Jane Smith');
		InsertItem(h,Nil,'HR Assistant - Bob Green');
		ExpandItem[h] := True;
		h := InsertItem(h,Nil,'Engineering');
		InsertItem(h,Nil,'Software Team');
		h := InsertItem(h,Nil,'Lead Developer - Mark H.');
		InsertItem(h,Nil,'Frontend Dev - Emily R.');
		InsertItem(h,Nil,'Backend Dev - Tom W.');
		InsertItem(hRoot,Nil,'QA Team');
	end;
	EndUpdate();
end
			 
		 
	 
   | 
  | 
	1252
   | 
  
	  Expandable bullet list 
	
		
			
 
 
// AnchorClick event - Occurs when an anchor element is clicked.
procedure TWinForm1.AxGrid1_AnchorClick(sender: System.Object; e: AxEXGRIDLib._IGridEvents_AnchorClickEvent);
begin
	with AxGrid1 do
	begin
		i := FormatABC('int(value)',TObject(e.anchorID),Nil,Nil);
		with Items do
		begin
			i := ItemByIndex[i];
			exp := ExpandItem[i];
			ExpandItem[i] := False;
		end;
	end
end;
with AxGrid1 do
begin
	BeginUpdate();
	set_HTMLPicture('expand','gCJKBOI4NBQaBQAhQNJJIIhShQACERCAIA0RD7zf5hiIBOZSI5CACuZwcdMRAhnIJNIMKWKPBb8MIFiIJOBILJzhQOYM7YIBXCRNbtiIYOhFLB0KZvMx0O5hORlABQMJ' + 
	'pNx0FxOIpUEA1FwxFw3RbWe45iK2MpYJJmJJJFQABERmgaAM0AMRJURDd1AF3hUQhQoAIDvsRAURGIBw8ThRaiJpQ4EwsKNURyzZO13dGEAGYzWcqlWrFarlesA3AGcS' + 
	'AHAGShQwGQzGABUGEv2TAAFUGS26Uy2GwuH1wAKQ5HAAw+s4YwGIwGGWNa6awbST7DBTiLyJJEIJUHBPUqSGJuYYwCAES5pBiQfyEX4QKAFH6QSihJQ/GZlET1FhIcgG' + 
	'nUdoVHMmxajSIghlMKhsGiAAFggQ5dmKcRHEUEhbFAFQBgacABmAAJgAAcAJkAZgNjUcwDFecYcD8QoIDsGJjD6aYaGyHI7mqLRfgGfBcg+TYggkEhakQThtFsEpAE2X' + 
	'h7goSIJiSHp6haKgPGOXx3j+c5hiKLpri6JAPHWYJREuFJkBCYxcFeYS7ikJQzG0ZIVGKMBYGsVwXDWVQHjqfpjAoYpyE4Z5vH2YoHDkZwzkkUxHC8pwCgifIHBCdk4G' + 
	'MLQVmcXJVhicxWi4IIUiKSQ1A8cBUj+eBEGCFQlFSIophiPRkFAWBLFALhwm+HhKjARpmgSGwNn4AIUCcZZUFEKoVmwywkiKJwiFcIQwEEgI');
	set_HTMLPicture('collapse','gCJKBOI4NBQaBQAhQNJJIIhShQACERCAIA0RD7zf5hiIBOZSI5CACuZwcdMRAhnIJNIMKWKPBb8MIFiIJOBILJzhQOYM7YIBXCRNbtiIYOhFLB0KZvMx0O5hORlABQMJ' + 
	'pNx0FxOIpUEA1FwxFw3RbWe45iK2MpYJJmJJJFQABERmgaAM0AMRJURDd1AF3hUQhQoAIDvsRAURGIBw8ThRaiJpQ4EwsKNURyzZO13dGEAGYzWcqlWrFarlesA3AGcS' + 
	'AHAGShQwGQzGABUGEv2TAAFUGS26Uy2GwuH1wAKQ5HAAw+s4YwGIwGGWNa6awbST7DBTiLZJJEIJUHBPdpSGKOAQxCAzGhIBKfbAvUBsSIPbiVMhLTxJPK3banJB0N5s' + 
	'A8VQRlmCRKjSCRaAIOgCiORISiWaI0DYLJPBYJBxB+LAqAMBRgAsIABjAAhYAOEB5kKDQ5kGZoaCaL5vH2KoEDCbpbDaWRrE8SopE+AA/DcMoZkgAgkhKERDlcdYEHAJ' + 
	'Rzg4IpyCAKRyl6HZLGONwMEMb5clwWB3n2CZki6FoWC4cwQCbGYukKwhiAwOp3HIEJFGCNBGDyLArE8R56n4RUnlOShHGcXJdgcKQlCOSRdEcLw8DmAoInyexvFeMRGG' + 
	'0DARmsbRZmsfRxleFZeHoD4eEKKRxGmPANgAC5xDAWpYHMW4uCGywkiKJwiFcIQwEEgI');
	HeaderVisible := False;
	HasLines := EXGRIDLib.HierarchyLineEnum.exNoLine;
	HasButtons := EXGRIDLib.ExpandButtonEnum.exNoButtons;
	Indent := 12;
	DefaultItemHeight := 24;
	DrawGridLines := EXGRIDLib.GridLinesEnum.exHLines;
	GridLineStyle := EXGRIDLib.GridLinesStyleEnum.exGridLinesSolid;
	GridLineColor := Color.FromArgb(204,204,204);
	ShowFocusRect := False;
	ExpandOnDblClick := False;
	ExpandOnKeys := False;
	with Columns do
	begin
		with (Add('Item') as EXGRIDLib.Column) do
		begin
			Def[EXGRIDLib.DefColumnEnum.exCellValueFormat] := TObject(1);
			FormatColumn := '(len(parent(1 index ``)) ? (`<b><fgcolor gray>` + (1 pos ``) + `. ` + `</fgcolor></b>` + `<a ` + (0 index ``) + `><img>` + (%CC0' + 
	' ? (not %CX0 ? `expand` : `collapse`) : `collapse`) + `:16</img></a>`) : ``) + ` ` + value';
			with Editor do
			begin
				EditType := EXGRIDLib.EditTypeEnum.EditType;
				Option[EXGRIDLib.EditorOptionEnum.exEditorAdjustPos] := '32D 4D -4D -4D';
			end;
		end;
	end;
	with Items do
	begin
		hRoot := AddItem('ACME Corporation');
		SelectableItem[hRoot] := False;
		ExpandItem[hRoot] := True;
		h := InsertItem(hRoot,Nil,'Management');
		InsertItem(h,Nil,'CEO - Alice Brown');
		InsertItem(h,Nil,'COO - James Lee');
		h := InsertItem(hRoot,Nil,'HR Department');
		InsertItem(h,Nil,'Recruiter - Jane Smith');
		InsertItem(h,Nil,'HR Assistant - Bob Green');
		ExpandItem[h] := True;
		h := InsertItem(h,Nil,'Engineering');
		InsertItem(h,Nil,'Software Team');
		h := InsertItem(h,Nil,'Lead Developer - Mark H.');
		InsertItem(h,Nil,'Frontend Dev - Emily R.');
		InsertItem(h,Nil,'Backend Dev - Tom W.');
		InsertItem(hRoot,Nil,'QA Team');
	end;
	EndUpdate();
end
			 
		 
	 
   | 
  | 
	1251
   | 
  
	  Does grouping support multi-column sorting 
	
		
			
 
 
with AxGrid1 do
begin
	BeginUpdate();
	SingleSort := False;
	HeaderVisible := False;
	DrawGridLines := EXGRIDLib.GridLinesEnum.exRowLines;
	GridLineStyle := EXGRIDLib.GridLinesStyleEnum.exGridLinesSolid;
	AllowGroupBy := True;
	Columns.Add('Prefix');
	Columns.Add('Region');
	Columns.Add('City');
	with (Columns.Add('Sort') as EXGRIDLib.Column) do
	begin
		ComputedField := '%1 + %2';
		Visible := False;
	end;
	with Items do
	begin
		h := AddItem('+33');
		CellValue[TObject(h),TObject(1)] := 'Corsica';
		CellValue[TObject(h),TObject(2)] := 'Bastia ';
		h := AddItem('+33');
		CellValue[TObject(h),TObject(1)] := 'Occitanie';
		CellValue[TObject(h),TObject(2)] := 'Toulouse ';
		h := AddItem('+33');
		CellValue[TObject(h),TObject(1)] := 'Corsica';
		CellValue[TObject(h),TObject(2)] := 'Ajaccio';
		h := AddItem('+33');
		CellValue[TObject(h),TObject(1)] := 'Occitanie';
		CellValue[TObject(h),TObject(2)] := 'Carcassonne ';
	end;
	Layout := 'multiplesort="C0:2";singlesort="C3:1";';
	EndUpdate();
end
			 
		 
	 
   | 
  | 
	1250
   | 
  
	  How can I vertically scroll the control 
	
		
			
with AxGrid1 do
begin
	BeginUpdate();
	ColumnAutoResize := False;
	DataSource := ((ComObj.CreateComObject(ComObj.ProgIDToClassID('DAO.DBEngine.120')) as DAO.PrivDBEngine).OpenDatabase('C:\Program Files\Exontrol\ExGrid\Sample\Access\misc.accdb',Nil,Nil,Nil).OpenRecordset('Orders',Nil,Nil,Nil) as DAO.Recordset2);
	Layout := 'Collapse="";VScroll=10';
	EndUpdate();
end
			 
		 
	 
   | 
  | 
	1249
   | 
  
	  Export the items as a two-dimensional array 
	
		
			
 
 
with AxGrid1 do
begin
	BeginUpdate();
	HeaderAppearance := EXGRIDLib.AppearanceEnum.Etched;
	ScrollBySingleLine := True;
	LinesAtRoot := EXGRIDLib.LinesAtRootEnum.exGroupLinesOutside;
	with Columns do
	begin
		with (Add('Desc') as EXGRIDLib.Column) do
		begin
			Width := 32;
			Def[EXGRIDLib.DefColumnEnum.exCellHasCheckBox] := TObject(True);
		end;
		with (Add('Amount') as EXGRIDLib.Column) do
		begin
			Def[EXGRIDLib.DefColumnEnum.exTotalColumn] := 'sum(current,rec,%1)';
			FormatColumn := 'currency(value)';
		end;
	end;
	with Items do
	begin
		LockedItemCount[EXGRIDLib.VAlignmentEnum.exTop] := 1;
		h := LockedItem[EXGRIDLib.VAlignmentEnum.exTop,0];
		CellValue[TObject(h),TObject(0)] := 'All';
		CellValue[TObject(h),TObject(1)] := 'sum(all,rec,%1)';
		CellValueFormat[TObject(h),TObject(1)] := EXGRIDLib.ValueFormatEnum.exTotalField;
		r := AddItem('Root 1');
		g1 := InsertItem(r,Nil,'Group A');
		CellValue[TObject(InsertItem(g1,Nil,'Item 1')),TObject(1)] := TObject(1);
		CellValue[TObject(InsertItem(g1,Nil,'Item 2')),TObject(1)] := TObject(2);
		CellState[TObject(ItemByIndex[3]),TObject(0)] := 1;
		g2 := InsertItem(r,Nil,'Group B');
		CellValue[TObject(InsertItem(g2,Nil,'Item 3')),TObject(1)] := TObject(3);
		CellValue[TObject(InsertItem(g2,Nil,'Item 4')),TObject(1)] := TObject(4);
		ExpandItem[g1] := True;
		ExpandItem[r] := True;
		h := AddItem('divider');
		ItemDivider[h] := 0;
		SelectableItem[h] := False;
		SortableItem[h] := False;
		ItemHeight[h] := 1;
		r := AddItem('Root 2');
		g1 := InsertItem(r,Nil,'Group C');
		CellValue[TObject(InsertItem(g1,Nil,'Item 5')),TObject(1)] := TObject(5);
		CellValue[TObject(InsertItem(g1,Nil,'Item 6')),TObject(1)] := TObject(6);
		SelectItem[ItemByIndex[2]] := True;
	end;
	PutItems(Export('array','all'),Nil);
	EndUpdate();
end
			 
		 
	 
   | 
  | 
	1248
   | 
  
	  Export only expanded items 
	
		
			
 
 
with AxGrid1 do
begin
	BeginUpdate();
	HeaderAppearance := EXGRIDLib.AppearanceEnum.Etched;
	ScrollBySingleLine := True;
	LinesAtRoot := EXGRIDLib.LinesAtRootEnum.exGroupLinesOutside;
	with Columns do
	begin
		with (Add('Desc') as EXGRIDLib.Column) do
		begin
			Width := 32;
			Def[EXGRIDLib.DefColumnEnum.exCellHasCheckBox] := TObject(True);
		end;
		with (Add('Amount') as EXGRIDLib.Column) do
		begin
			Def[EXGRIDLib.DefColumnEnum.exTotalColumn] := 'sum(current,rec,%1)';
			FormatColumn := 'currency(value)';
		end;
	end;
	with Items do
	begin
		LockedItemCount[EXGRIDLib.VAlignmentEnum.exTop] := 1;
		h := LockedItem[EXGRIDLib.VAlignmentEnum.exTop,0];
		CellValue[TObject(h),TObject(0)] := 'All';
		CellValue[TObject(h),TObject(1)] := 'sum(all,rec,%1)';
		CellValueFormat[TObject(h),TObject(1)] := EXGRIDLib.ValueFormatEnum.exTotalField;
		r := AddItem('Root 1');
		g1 := InsertItem(r,Nil,'Group A');
		CellValue[TObject(InsertItem(g1,Nil,'Item 1')),TObject(1)] := TObject(1);
		CellValue[TObject(InsertItem(g1,Nil,'Item 2')),TObject(1)] := TObject(2);
		CellState[TObject(ItemByIndex[3]),TObject(0)] := 1;
		g2 := InsertItem(r,Nil,'Group B');
		CellValue[TObject(InsertItem(g2,Nil,'Item 3')),TObject(1)] := TObject(3);
		CellValue[TObject(InsertItem(g2,Nil,'Item 4')),TObject(1)] := TObject(4);
		ExpandItem[g1] := True;
		ExpandItem[r] := True;
		h := AddItem('divider');
		ItemDivider[h] := 0;
		SelectableItem[h] := False;
		SortableItem[h] := False;
		ItemHeight[h] := 1;
		r := AddItem('Root 2');
		g1 := InsertItem(r,Nil,'Group C');
		CellValue[TObject(InsertItem(g1,Nil,'Item 5')),TObject(1)] := TObject(5);
		CellValue[TObject(InsertItem(g1,Nil,'Item 6')),TObject(1)] := TObject(6);
		SelectItem[ItemByIndex[2]] := True;
	end;
	EndUpdate();
	OutputDebugString( Export('','only(expanded)') );
end
			 
		 
	 
   | 
  | 
	1247
   | 
  
	  Export only selectable, sortable leaf items that are neither locked nor dividers 
	
		
			
 
 
with AxGrid1 do
begin
	BeginUpdate();
	HeaderAppearance := EXGRIDLib.AppearanceEnum.Etched;
	ScrollBySingleLine := True;
	LinesAtRoot := EXGRIDLib.LinesAtRootEnum.exGroupLinesOutside;
	with Columns do
	begin
		with (Add('Desc') as EXGRIDLib.Column) do
		begin
			Width := 32;
			Def[EXGRIDLib.DefColumnEnum.exCellHasCheckBox] := TObject(True);
		end;
		with (Add('Amount') as EXGRIDLib.Column) do
		begin
			Def[EXGRIDLib.DefColumnEnum.exTotalColumn] := 'sum(current,rec,%1)';
			FormatColumn := 'currency(value)';
		end;
	end;
	with Items do
	begin
		LockedItemCount[EXGRIDLib.VAlignmentEnum.exTop] := 1;
		h := LockedItem[EXGRIDLib.VAlignmentEnum.exTop,0];
		CellValue[TObject(h),TObject(0)] := 'All';
		CellValue[TObject(h),TObject(1)] := 'sum(all,rec,%1)';
		CellValueFormat[TObject(h),TObject(1)] := EXGRIDLib.ValueFormatEnum.exTotalField;
		r := AddItem('Root 1');
		g1 := InsertItem(r,Nil,'Group A');
		CellValue[TObject(InsertItem(g1,Nil,'Item 1')),TObject(1)] := TObject(1);
		CellValue[TObject(InsertItem(g1,Nil,'Item 2')),TObject(1)] := TObject(2);
		CellState[TObject(ItemByIndex[3]),TObject(0)] := 1;
		g2 := InsertItem(r,Nil,'Group B');
		CellValue[TObject(InsertItem(g2,Nil,'Item 3')),TObject(1)] := TObject(3);
		CellValue[TObject(InsertItem(g2,Nil,'Item 4')),TObject(1)] := TObject(4);
		ExpandItem[g1] := True;
		ExpandItem[r] := True;
		h := AddItem('divider');
		ItemDivider[h] := 0;
		SelectableItem[h] := False;
		SortableItem[h] := False;
		ItemHeight[h] := 1;
		r := AddItem('Root 2');
		g1 := InsertItem(r,Nil,'Group C');
		CellValue[TObject(InsertItem(g1,Nil,'Item 5')),TObject(1)] := TObject(5);
		CellValue[TObject(InsertItem(g1,Nil,'Item 6')),TObject(1)] := TObject(6);
		SelectItem[ItemByIndex[2]] := True;
	end;
	EndUpdate();
	OutputDebugString( Export('','only(leaf,sortable,selectable,!divider,!locked)') );
end
			 
		 
	 
   | 
  | 
	1246
   | 
  
	  Export only non-divider items 
	
		
			
 
 
with AxGrid1 do
begin
	BeginUpdate();
	HeaderAppearance := EXGRIDLib.AppearanceEnum.Etched;
	ScrollBySingleLine := True;
	LinesAtRoot := EXGRIDLib.LinesAtRootEnum.exGroupLinesOutside;
	with Columns do
	begin
		with (Add('Desc') as EXGRIDLib.Column) do
		begin
			Width := 32;
			Def[EXGRIDLib.DefColumnEnum.exCellHasCheckBox] := TObject(True);
		end;
		with (Add('Amount') as EXGRIDLib.Column) do
		begin
			Def[EXGRIDLib.DefColumnEnum.exTotalColumn] := 'sum(current,rec,%1)';
			FormatColumn := 'currency(value)';
		end;
	end;
	with Items do
	begin
		LockedItemCount[EXGRIDLib.VAlignmentEnum.exTop] := 1;
		h := LockedItem[EXGRIDLib.VAlignmentEnum.exTop,0];
		CellValue[TObject(h),TObject(0)] := 'All';
		CellValue[TObject(h),TObject(1)] := 'sum(all,rec,%1)';
		CellValueFormat[TObject(h),TObject(1)] := EXGRIDLib.ValueFormatEnum.exTotalField;
		r := AddItem('Root 1');
		g1 := InsertItem(r,Nil,'Group A');
		CellValue[TObject(InsertItem(g1,Nil,'Item 1')),TObject(1)] := TObject(1);
		CellValue[TObject(InsertItem(g1,Nil,'Item 2')),TObject(1)] := TObject(2);
		CellState[TObject(ItemByIndex[3]),TObject(0)] := 1;
		g2 := InsertItem(r,Nil,'Group B');
		CellValue[TObject(InsertItem(g2,Nil,'Item 3')),TObject(1)] := TObject(3);
		CellValue[TObject(InsertItem(g2,Nil,'Item 4')),TObject(1)] := TObject(4);
		ExpandItem[g1] := True;
		ExpandItem[r] := True;
		h := AddItem('divider');
		ItemDivider[h] := 0;
		SelectableItem[h] := False;
		SortableItem[h] := False;
		ItemHeight[h] := 1;
		r := AddItem('Root 2');
		g1 := InsertItem(r,Nil,'Group C');
		CellValue[TObject(InsertItem(g1,Nil,'Item 5')),TObject(1)] := TObject(5);
		CellValue[TObject(InsertItem(g1,Nil,'Item 6')),TObject(1)] := TObject(6);
		SelectItem[ItemByIndex[2]] := True;
	end;
	EndUpdate();
	OutputDebugString( Export('','only(!divider)') );
end
			 
		 
	 
   | 
  | 
	1245
   | 
  
	  Export only selectable items 
	
		
			
 
 
with AxGrid1 do
begin
	BeginUpdate();
	HeaderAppearance := EXGRIDLib.AppearanceEnum.Etched;
	ScrollBySingleLine := True;
	LinesAtRoot := EXGRIDLib.LinesAtRootEnum.exGroupLinesOutside;
	with Columns do
	begin
		with (Add('Desc') as EXGRIDLib.Column) do
		begin
			Width := 32;
			Def[EXGRIDLib.DefColumnEnum.exCellHasCheckBox] := TObject(True);
		end;
		with (Add('Amount') as EXGRIDLib.Column) do
		begin
			Def[EXGRIDLib.DefColumnEnum.exTotalColumn] := 'sum(current,rec,%1)';
			FormatColumn := 'currency(value)';
		end;
	end;
	with Items do
	begin
		LockedItemCount[EXGRIDLib.VAlignmentEnum.exTop] := 1;
		h := LockedItem[EXGRIDLib.VAlignmentEnum.exTop,0];
		CellValue[TObject(h),TObject(0)] := 'All';
		CellValue[TObject(h),TObject(1)] := 'sum(all,rec,%1)';
		CellValueFormat[TObject(h),TObject(1)] := EXGRIDLib.ValueFormatEnum.exTotalField;
		r := AddItem('Root 1');
		g1 := InsertItem(r,Nil,'Group A');
		CellValue[TObject(InsertItem(g1,Nil,'Item 1')),TObject(1)] := TObject(1);
		CellValue[TObject(InsertItem(g1,Nil,'Item 2')),TObject(1)] := TObject(2);
		CellState[TObject(ItemByIndex[3]),TObject(0)] := 1;
		g2 := InsertItem(r,Nil,'Group B');
		CellValue[TObject(InsertItem(g2,Nil,'Item 3')),TObject(1)] := TObject(3);
		CellValue[TObject(InsertItem(g2,Nil,'Item 4')),TObject(1)] := TObject(4);
		ExpandItem[g1] := True;
		ExpandItem[r] := True;
		h := AddItem('divider');
		ItemDivider[h] := 0;
		SelectableItem[h] := False;
		SortableItem[h] := False;
		ItemHeight[h] := 1;
		r := AddItem('Root 2');
		g1 := InsertItem(r,Nil,'Group C');
		CellValue[TObject(InsertItem(g1,Nil,'Item 5')),TObject(1)] := TObject(5);
		CellValue[TObject(InsertItem(g1,Nil,'Item 6')),TObject(1)] := TObject(6);
		SelectItem[ItemByIndex[2]] := True;
	end;
	EndUpdate();
	OutputDebugString( Export('','only(selectable)') );
end
			 
		 
	 
   | 
  | 
	1244
   | 
  
	  Export only sortable, but not locked items 
	
		
			
 
 
with AxGrid1 do
begin
	BeginUpdate();
	HeaderAppearance := EXGRIDLib.AppearanceEnum.Etched;
	ScrollBySingleLine := True;
	LinesAtRoot := EXGRIDLib.LinesAtRootEnum.exGroupLinesOutside;
	with Columns do
	begin
		with (Add('Desc') as EXGRIDLib.Column) do
		begin
			Width := 32;
			Def[EXGRIDLib.DefColumnEnum.exCellHasCheckBox] := TObject(True);
		end;
		with (Add('Amount') as EXGRIDLib.Column) do
		begin
			Def[EXGRIDLib.DefColumnEnum.exTotalColumn] := 'sum(current,rec,%1)';
			FormatColumn := 'currency(value)';
		end;
	end;
	with Items do
	begin
		LockedItemCount[EXGRIDLib.VAlignmentEnum.exTop] := 1;
		h := LockedItem[EXGRIDLib.VAlignmentEnum.exTop,0];
		CellValue[TObject(h),TObject(0)] := 'All';
		CellValue[TObject(h),TObject(1)] := 'sum(all,rec,%1)';
		CellValueFormat[TObject(h),TObject(1)] := EXGRIDLib.ValueFormatEnum.exTotalField;
		r := AddItem('Root 1');
		g1 := InsertItem(r,Nil,'Group A');
		CellValue[TObject(InsertItem(g1,Nil,'Item 1')),TObject(1)] := TObject(1);
		CellValue[TObject(InsertItem(g1,Nil,'Item 2')),TObject(1)] := TObject(2);
		CellState[TObject(ItemByIndex[3]),TObject(0)] := 1;
		g2 := InsertItem(r,Nil,'Group B');
		CellValue[TObject(InsertItem(g2,Nil,'Item 3')),TObject(1)] := TObject(3);
		CellValue[TObject(InsertItem(g2,Nil,'Item 4')),TObject(1)] := TObject(4);
		ExpandItem[g1] := True;
		ExpandItem[r] := True;
		h := AddItem('divider');
		ItemDivider[h] := 0;
		SelectableItem[h] := False;
		SortableItem[h] := False;
		ItemHeight[h] := 1;
		r := AddItem('Root 2');
		g1 := InsertItem(r,Nil,'Group C');
		CellValue[TObject(InsertItem(g1,Nil,'Item 5')),TObject(1)] := TObject(5);
		CellValue[TObject(InsertItem(g1,Nil,'Item 6')),TObject(1)] := TObject(6);
		SelectItem[ItemByIndex[2]] := True;
	end;
	EndUpdate();
	OutputDebugString( Export('','only(sortable,!locked)') );
end
			 
		 
	 
   | 
  | 
	1243
   | 
  
	  Export only checked items on specified column 
	
		
			
 
 
with AxGrid1 do
begin
	BeginUpdate();
	HeaderAppearance := EXGRIDLib.AppearanceEnum.Etched;
	ScrollBySingleLine := True;
	LinesAtRoot := EXGRIDLib.LinesAtRootEnum.exGroupLinesOutside;
	with Columns do
	begin
		with (Add('Desc') as EXGRIDLib.Column) do
		begin
			Width := 32;
			Def[EXGRIDLib.DefColumnEnum.exCellHasCheckBox] := TObject(True);
		end;
		with (Add('Amount') as EXGRIDLib.Column) do
		begin
			Def[EXGRIDLib.DefColumnEnum.exTotalColumn] := 'sum(current,rec,%1)';
			FormatColumn := 'currency(value)';
		end;
	end;
	with Items do
	begin
		LockedItemCount[EXGRIDLib.VAlignmentEnum.exTop] := 1;
		h := LockedItem[EXGRIDLib.VAlignmentEnum.exTop,0];
		CellValue[TObject(h),TObject(0)] := 'All';
		CellValue[TObject(h),TObject(1)] := 'sum(all,rec,%1)';
		CellValueFormat[TObject(h),TObject(1)] := EXGRIDLib.ValueFormatEnum.exTotalField;
		r := AddItem('Root 1');
		g1 := InsertItem(r,Nil,'Group A');
		CellValue[TObject(InsertItem(g1,Nil,'Item 1')),TObject(1)] := TObject(1);
		CellValue[TObject(InsertItem(g1,Nil,'Item 2')),TObject(1)] := TObject(2);
		CellState[TObject(ItemByIndex[3]),TObject(0)] := 1;
		g2 := InsertItem(r,Nil,'Group B');
		CellValue[TObject(InsertItem(g2,Nil,'Item 3')),TObject(1)] := TObject(3);
		CellValue[TObject(InsertItem(g2,Nil,'Item 4')),TObject(1)] := TObject(4);
		ExpandItem[g1] := True;
		ExpandItem[r] := True;
		h := AddItem('divider');
		ItemDivider[h] := 0;
		SelectableItem[h] := False;
		SortableItem[h] := False;
		ItemHeight[h] := 1;
		r := AddItem('Root 2');
		g1 := InsertItem(r,Nil,'Group C');
		CellValue[TObject(InsertItem(g1,Nil,'Item 5')),TObject(1)] := TObject(5);
		CellValue[TObject(InsertItem(g1,Nil,'Item 6')),TObject(1)] := TObject(6);
		SelectItem[ItemByIndex[2]] := True;
	end;
	EndUpdate();
	OutputDebugString( Export('','only(checked[0])') );
end
			 
		 
	 
   | 
  | 
	1242
   | 
  
	  Export only filtered, not locked or divider items 
	
		
			
 
 
with AxGrid1 do
begin
	BeginUpdate();
	HeaderAppearance := EXGRIDLib.AppearanceEnum.Etched;
	ScrollBySingleLine := True;
	LinesAtRoot := EXGRIDLib.LinesAtRootEnum.exGroupLinesOutside;
	with Columns do
	begin
		with (Add('Desc') as EXGRIDLib.Column) do
		begin
			Width := 32;
			Def[EXGRIDLib.DefColumnEnum.exCellHasCheckBox] := TObject(True);
		end;
		with (Add('Amount') as EXGRIDLib.Column) do
		begin
			Def[EXGRIDLib.DefColumnEnum.exTotalColumn] := 'sum(current,rec,%1)';
			FormatColumn := 'currency(value)';
		end;
	end;
	with Items do
	begin
		LockedItemCount[EXGRIDLib.VAlignmentEnum.exTop] := 1;
		h := LockedItem[EXGRIDLib.VAlignmentEnum.exTop,0];
		CellValue[TObject(h),TObject(0)] := 'All';
		CellValue[TObject(h),TObject(1)] := 'sum(all,rec,%1)';
		CellValueFormat[TObject(h),TObject(1)] := EXGRIDLib.ValueFormatEnum.exTotalField;
		r := AddItem('Root 1');
		g1 := InsertItem(r,Nil,'Group A');
		CellValue[TObject(InsertItem(g1,Nil,'Item 1')),TObject(1)] := TObject(1);
		CellValue[TObject(InsertItem(g1,Nil,'Item 2')),TObject(1)] := TObject(2);
		CellState[TObject(ItemByIndex[3]),TObject(0)] := 1;
		g2 := InsertItem(r,Nil,'Group B');
		CellValue[TObject(InsertItem(g2,Nil,'Item 3')),TObject(1)] := TObject(3);
		CellValue[TObject(InsertItem(g2,Nil,'Item 4')),TObject(1)] := TObject(4);
		ExpandItem[g1] := True;
		ExpandItem[r] := True;
		h := AddItem('divider');
		ItemDivider[h] := 0;
		SelectableItem[h] := False;
		SortableItem[h] := False;
		ItemHeight[h] := 1;
		r := AddItem('Root 2');
		g1 := InsertItem(r,Nil,'Group C');
		CellValue[TObject(InsertItem(g1,Nil,'Item 5')),TObject(1)] := TObject(5);
		CellValue[TObject(InsertItem(g1,Nil,'Item 6')),TObject(1)] := TObject(6);
		SelectItem[ItemByIndex[2]] := True;
	end;
	EndUpdate();
	OutputDebugString( Export('','only(visible,!locked,!divider)') );
end
			 
		 
	 
   | 
  | 
	1241
   | 
  
	  Export only selected items 
	
		
			
 
 
with AxGrid1 do
begin
	BeginUpdate();
	HeaderAppearance := EXGRIDLib.AppearanceEnum.Etched;
	ScrollBySingleLine := True;
	LinesAtRoot := EXGRIDLib.LinesAtRootEnum.exGroupLinesOutside;
	with Columns do
	begin
		with (Add('Desc') as EXGRIDLib.Column) do
		begin
			Width := 32;
			Def[EXGRIDLib.DefColumnEnum.exCellHasCheckBox] := TObject(True);
		end;
		with (Add('Amount') as EXGRIDLib.Column) do
		begin
			Def[EXGRIDLib.DefColumnEnum.exTotalColumn] := 'sum(current,rec,%1)';
			FormatColumn := 'currency(value)';
		end;
	end;
	with Items do
	begin
		LockedItemCount[EXGRIDLib.VAlignmentEnum.exTop] := 1;
		h := LockedItem[EXGRIDLib.VAlignmentEnum.exTop,0];
		CellValue[TObject(h),TObject(0)] := 'All';
		CellValue[TObject(h),TObject(1)] := 'sum(all,rec,%1)';
		CellValueFormat[TObject(h),TObject(1)] := EXGRIDLib.ValueFormatEnum.exTotalField;
		r := AddItem('Root 1');
		g1 := InsertItem(r,Nil,'Group A');
		CellValue[TObject(InsertItem(g1,Nil,'Item 1')),TObject(1)] := TObject(1);
		CellValue[TObject(InsertItem(g1,Nil,'Item 2')),TObject(1)] := TObject(2);
		CellState[TObject(ItemByIndex[3]),TObject(0)] := 1;
		g2 := InsertItem(r,Nil,'Group B');
		CellValue[TObject(InsertItem(g2,Nil,'Item 3')),TObject(1)] := TObject(3);
		CellValue[TObject(InsertItem(g2,Nil,'Item 4')),TObject(1)] := TObject(4);
		ExpandItem[g1] := True;
		ExpandItem[r] := True;
		h := AddItem('divider');
		ItemDivider[h] := 0;
		SelectableItem[h] := False;
		SortableItem[h] := False;
		ItemHeight[h] := 1;
		r := AddItem('Root 2');
		g1 := InsertItem(r,Nil,'Group C');
		CellValue[TObject(InsertItem(g1,Nil,'Item 5')),TObject(1)] := TObject(5);
		CellValue[TObject(InsertItem(g1,Nil,'Item 6')),TObject(1)] := TObject(6);
		SelectItem[ItemByIndex[2]] := True;
	end;
	EndUpdate();
	OutputDebugString( Export('','only(selected)') );
end
			 
		 
	 
   | 
  | 
	1240
   | 
  
	  Export only locked items 
	
		
			
 
 
with AxGrid1 do
begin
	BeginUpdate();
	HeaderAppearance := EXGRIDLib.AppearanceEnum.Etched;
	ScrollBySingleLine := True;
	LinesAtRoot := EXGRIDLib.LinesAtRootEnum.exGroupLinesOutside;
	with Columns do
	begin
		with (Add('Desc') as EXGRIDLib.Column) do
		begin
			Width := 32;
			Def[EXGRIDLib.DefColumnEnum.exCellHasCheckBox] := TObject(True);
		end;
		with (Add('Amount') as EXGRIDLib.Column) do
		begin
			Def[EXGRIDLib.DefColumnEnum.exTotalColumn] := 'sum(current,rec,%1)';
			FormatColumn := 'currency(value)';
		end;
	end;
	with Items do
	begin
		LockedItemCount[EXGRIDLib.VAlignmentEnum.exTop] := 1;
		h := LockedItem[EXGRIDLib.VAlignmentEnum.exTop,0];
		CellValue[TObject(h),TObject(0)] := 'All';
		CellValue[TObject(h),TObject(1)] := 'sum(all,rec,%1)';
		CellValueFormat[TObject(h),TObject(1)] := EXGRIDLib.ValueFormatEnum.exTotalField;
		r := AddItem('Root 1');
		g1 := InsertItem(r,Nil,'Group A');
		CellValue[TObject(InsertItem(g1,Nil,'Item 1')),TObject(1)] := TObject(1);
		CellValue[TObject(InsertItem(g1,Nil,'Item 2')),TObject(1)] := TObject(2);
		CellState[TObject(ItemByIndex[3]),TObject(0)] := 1;
		g2 := InsertItem(r,Nil,'Group B');
		CellValue[TObject(InsertItem(g2,Nil,'Item 3')),TObject(1)] := TObject(3);
		CellValue[TObject(InsertItem(g2,Nil,'Item 4')),TObject(1)] := TObject(4);
		ExpandItem[g1] := True;
		ExpandItem[r] := True;
		h := AddItem('divider');
		ItemDivider[h] := 0;
		SelectableItem[h] := False;
		SortableItem[h] := False;
		ItemHeight[h] := 1;
		r := AddItem('Root 2');
		g1 := InsertItem(r,Nil,'Group C');
		CellValue[TObject(InsertItem(g1,Nil,'Item 5')),TObject(1)] := TObject(5);
		CellValue[TObject(InsertItem(g1,Nil,'Item 6')),TObject(1)] := TObject(6);
		SelectItem[ItemByIndex[2]] := True;
	end;
	EndUpdate();
	OutputDebugString( Export('','only(locked)') );
end
			 
		 
	 
   | 
  | 
	1239
   | 
  
	  Export the leaf items of the control, excluding parent or grouped items 
	
		
			
 
 
with AxGrid1 do
begin
	BeginUpdate();
	HeaderAppearance := EXGRIDLib.AppearanceEnum.Etched;
	ScrollBySingleLine := True;
	LinesAtRoot := EXGRIDLib.LinesAtRootEnum.exGroupLinesOutside;
	with Columns do
	begin
		with (Add('Desc') as EXGRIDLib.Column) do
		begin
			Width := 32;
			Def[EXGRIDLib.DefColumnEnum.exCellHasCheckBox] := TObject(True);
		end;
		with (Add('Amount') as EXGRIDLib.Column) do
		begin
			Def[EXGRIDLib.DefColumnEnum.exTotalColumn] := 'sum(current,rec,%1)';
			FormatColumn := 'currency(value)';
		end;
	end;
	with Items do
	begin
		LockedItemCount[EXGRIDLib.VAlignmentEnum.exTop] := 1;
		h := LockedItem[EXGRIDLib.VAlignmentEnum.exTop,0];
		CellValue[TObject(h),TObject(0)] := 'All';
		CellValue[TObject(h),TObject(1)] := 'sum(all,rec,%1)';
		CellValueFormat[TObject(h),TObject(1)] := EXGRIDLib.ValueFormatEnum.exTotalField;
		r := AddItem('Root 1');
		g1 := InsertItem(r,Nil,'Group A');
		CellValue[TObject(InsertItem(g1,Nil,'Item 1')),TObject(1)] := TObject(1);
		CellValue[TObject(InsertItem(g1,Nil,'Item 2')),TObject(1)] := TObject(2);
		CellState[TObject(ItemByIndex[3]),TObject(0)] := 1;
		g2 := InsertItem(r,Nil,'Group B');
		CellValue[TObject(InsertItem(g2,Nil,'Item 3')),TObject(1)] := TObject(3);
		CellValue[TObject(InsertItem(g2,Nil,'Item 4')),TObject(1)] := TObject(4);
		ExpandItem[g1] := True;
		ExpandItem[r] := True;
		h := AddItem('divider');
		ItemDivider[h] := 0;
		SelectableItem[h] := False;
		SortableItem[h] := False;
		ItemHeight[h] := 1;
		r := AddItem('Root 2');
		g1 := InsertItem(r,Nil,'Group C');
		CellValue[TObject(InsertItem(g1,Nil,'Item 5')),TObject(1)] := TObject(5);
		CellValue[TObject(InsertItem(g1,Nil,'Item 6')),TObject(1)] := TObject(6);
		SelectItem[ItemByIndex[2]] := True;
	end;
	EndUpdate();
	OutputDebugString( Export('','leaf') );
end
			 
		 
	 
   | 
  | 
	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) 
	
		
			
 
 
with AxGrid1 do
begin
	BeginUpdate();
	HeaderAppearance := EXGRIDLib.AppearanceEnum.Etched;
	ScrollBySingleLine := True;
	LinesAtRoot := EXGRIDLib.LinesAtRootEnum.exGroupLinesOutside;
	with Columns do
	begin
		with (Add('Desc') as EXGRIDLib.Column) do
		begin
			Width := 32;
			Def[EXGRIDLib.DefColumnEnum.exCellHasCheckBox] := TObject(True);
		end;
		with (Add('Amount') as EXGRIDLib.Column) do
		begin
			Def[EXGRIDLib.DefColumnEnum.exTotalColumn] := 'sum(current,rec,%1)';
			FormatColumn := 'currency(value)';
		end;
	end;
	with Items do
	begin
		LockedItemCount[EXGRIDLib.VAlignmentEnum.exTop] := 1;
		h := LockedItem[EXGRIDLib.VAlignmentEnum.exTop,0];
		CellValue[TObject(h),TObject(0)] := 'All';
		CellValue[TObject(h),TObject(1)] := 'sum(all,rec,%1)';
		CellValueFormat[TObject(h),TObject(1)] := EXGRIDLib.ValueFormatEnum.exTotalField;
		r := AddItem('Root 1');
		g1 := InsertItem(r,Nil,'Group A');
		CellValue[TObject(InsertItem(g1,Nil,'Item 1')),TObject(1)] := TObject(1);
		CellValue[TObject(InsertItem(g1,Nil,'Item 2')),TObject(1)] := TObject(2);
		CellState[TObject(ItemByIndex[3]),TObject(0)] := 1;
		g2 := InsertItem(r,Nil,'Group B');
		CellValue[TObject(InsertItem(g2,Nil,'Item 3')),TObject(1)] := TObject(3);
		CellValue[TObject(InsertItem(g2,Nil,'Item 4')),TObject(1)] := TObject(4);
		ExpandItem[g1] := True;
		ExpandItem[r] := True;
		h := AddItem('divider');
		ItemDivider[h] := 0;
		SelectableItem[h] := False;
		SortableItem[h] := False;
		ItemHeight[h] := 1;
		r := AddItem('Root 2');
		g1 := InsertItem(r,Nil,'Group C');
		CellValue[TObject(InsertItem(g1,Nil,'Item 5')),TObject(1)] := TObject(5);
		CellValue[TObject(InsertItem(g1,Nil,'Item 6')),TObject(1)] := TObject(6);
		SelectItem[ItemByIndex[2]] := True;
	end;
	EndUpdate();
	OutputDebugString( Export('','chk') );
end
			 
		 
	 
   | 
  | 
	1237
   | 
  
	  Export the selected-items 
	
		
			
 
 
with AxGrid1 do
begin
	BeginUpdate();
	HeaderAppearance := EXGRIDLib.AppearanceEnum.Etched;
	ScrollBySingleLine := True;
	LinesAtRoot := EXGRIDLib.LinesAtRootEnum.exGroupLinesOutside;
	with Columns do
	begin
		with (Add('Desc') as EXGRIDLib.Column) do
		begin
			Width := 32;
			Def[EXGRIDLib.DefColumnEnum.exCellHasCheckBox] := TObject(True);
		end;
		with (Add('Amount') as EXGRIDLib.Column) do
		begin
			Def[EXGRIDLib.DefColumnEnum.exTotalColumn] := 'sum(current,rec,%1)';
			FormatColumn := 'currency(value)';
		end;
	end;
	with Items do
	begin
		LockedItemCount[EXGRIDLib.VAlignmentEnum.exTop] := 1;
		h := LockedItem[EXGRIDLib.VAlignmentEnum.exTop,0];
		CellValue[TObject(h),TObject(0)] := 'All';
		CellValue[TObject(h),TObject(1)] := 'sum(all,rec,%1)';
		CellValueFormat[TObject(h),TObject(1)] := EXGRIDLib.ValueFormatEnum.exTotalField;
		r := AddItem('Root 1');
		g1 := InsertItem(r,Nil,'Group A');
		CellValue[TObject(InsertItem(g1,Nil,'Item 1')),TObject(1)] := TObject(1);
		CellValue[TObject(InsertItem(g1,Nil,'Item 2')),TObject(1)] := TObject(2);
		CellState[TObject(ItemByIndex[3]),TObject(0)] := 1;
		g2 := InsertItem(r,Nil,'Group B');
		CellValue[TObject(InsertItem(g2,Nil,'Item 3')),TObject(1)] := TObject(3);
		CellValue[TObject(InsertItem(g2,Nil,'Item 4')),TObject(1)] := TObject(4);
		ExpandItem[g1] := True;
		ExpandItem[r] := True;
		h := AddItem('divider');
		ItemDivider[h] := 0;
		SelectableItem[h] := False;
		SortableItem[h] := False;
		ItemHeight[h] := 1;
		r := AddItem('Root 2');
		g1 := InsertItem(r,Nil,'Group C');
		CellValue[TObject(InsertItem(g1,Nil,'Item 5')),TObject(1)] := TObject(5);
		CellValue[TObject(InsertItem(g1,Nil,'Item 6')),TObject(1)] := TObject(6);
		SelectItem[ItemByIndex[2]] := True;
	end;
	EndUpdate();
	OutputDebugString( Export('','sel') );
end
			 
		 
	 
   | 
  | 
	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 
	
		
			
 
 
with AxGrid1 do
begin
	BeginUpdate();
	HeaderAppearance := EXGRIDLib.AppearanceEnum.Etched;
	ScrollBySingleLine := True;
	LinesAtRoot := EXGRIDLib.LinesAtRootEnum.exGroupLinesOutside;
	with Columns do
	begin
		with (Add('Desc') as EXGRIDLib.Column) do
		begin
			Width := 32;
			Def[EXGRIDLib.DefColumnEnum.exCellHasCheckBox] := TObject(True);
		end;
		with (Add('Amount') as EXGRIDLib.Column) do
		begin
			Def[EXGRIDLib.DefColumnEnum.exTotalColumn] := 'sum(current,rec,%1)';
			FormatColumn := 'currency(value)';
		end;
	end;
	with Items do
	begin
		LockedItemCount[EXGRIDLib.VAlignmentEnum.exTop] := 1;
		h := LockedItem[EXGRIDLib.VAlignmentEnum.exTop,0];
		CellValue[TObject(h),TObject(0)] := 'All';
		CellValue[TObject(h),TObject(1)] := 'sum(all,rec,%1)';
		CellValueFormat[TObject(h),TObject(1)] := EXGRIDLib.ValueFormatEnum.exTotalField;
		r := AddItem('Root 1');
		g1 := InsertItem(r,Nil,'Group A');
		CellValue[TObject(InsertItem(g1,Nil,'Item 1')),TObject(1)] := TObject(1);
		CellValue[TObject(InsertItem(g1,Nil,'Item 2')),TObject(1)] := TObject(2);
		CellState[TObject(ItemByIndex[3]),TObject(0)] := 1;
		g2 := InsertItem(r,Nil,'Group B');
		CellValue[TObject(InsertItem(g2,Nil,'Item 3')),TObject(1)] := TObject(3);
		CellValue[TObject(InsertItem(g2,Nil,'Item 4')),TObject(1)] := TObject(4);
		ExpandItem[g1] := True;
		ExpandItem[r] := True;
		h := AddItem('divider');
		ItemDivider[h] := 0;
		SelectableItem[h] := False;
		SortableItem[h] := False;
		ItemHeight[h] := 1;
		r := AddItem('Root 2');
		g1 := InsertItem(r,Nil,'Group C');
		CellValue[TObject(InsertItem(g1,Nil,'Item 5')),TObject(1)] := TObject(5);
		CellValue[TObject(InsertItem(g1,Nil,'Item 6')),TObject(1)] := TObject(6);
		SelectItem[ItemByIndex[2]] := True;
	end;
	EndUpdate();
	OutputDebugString( Export('','vis') );
end
			 
		 
	 
   | 
  | 
	1235
   | 
  
	  Export all items, including the hidden or collapsed items 
	
		
			
 
 
with AxGrid1 do
begin
	BeginUpdate();
	HeaderAppearance := EXGRIDLib.AppearanceEnum.Etched;
	ScrollBySingleLine := True;
	LinesAtRoot := EXGRIDLib.LinesAtRootEnum.exGroupLinesOutside;
	with Columns do
	begin
		with (Add('Desc') as EXGRIDLib.Column) do
		begin
			Width := 32;
			Def[EXGRIDLib.DefColumnEnum.exCellHasCheckBox] := TObject(True);
		end;
		with (Add('Amount') as EXGRIDLib.Column) do
		begin
			Def[EXGRIDLib.DefColumnEnum.exTotalColumn] := 'sum(current,rec,%1)';
			FormatColumn := 'currency(value)';
		end;
	end;
	with Items do
	begin
		LockedItemCount[EXGRIDLib.VAlignmentEnum.exTop] := 1;
		h := LockedItem[EXGRIDLib.VAlignmentEnum.exTop,0];
		CellValue[TObject(h),TObject(0)] := 'All';
		CellValue[TObject(h),TObject(1)] := 'sum(all,rec,%1)';
		CellValueFormat[TObject(h),TObject(1)] := EXGRIDLib.ValueFormatEnum.exTotalField;
		r := AddItem('Root 1');
		g1 := InsertItem(r,Nil,'Group A');
		CellValue[TObject(InsertItem(g1,Nil,'Item 1')),TObject(1)] := TObject(1);
		CellValue[TObject(InsertItem(g1,Nil,'Item 2')),TObject(1)] := TObject(2);
		CellState[TObject(ItemByIndex[3]),TObject(0)] := 1;
		g2 := InsertItem(r,Nil,'Group B');
		CellValue[TObject(InsertItem(g2,Nil,'Item 3')),TObject(1)] := TObject(3);
		CellValue[TObject(InsertItem(g2,Nil,'Item 4')),TObject(1)] := TObject(4);
		ExpandItem[g1] := True;
		ExpandItem[r] := True;
		h := AddItem('divider');
		ItemDivider[h] := 0;
		SelectableItem[h] := False;
		SortableItem[h] := False;
		ItemHeight[h] := 1;
		r := AddItem('Root 2');
		g1 := InsertItem(r,Nil,'Group C');
		CellValue[TObject(InsertItem(g1,Nil,'Item 5')),TObject(1)] := TObject(5);
		CellValue[TObject(InsertItem(g1,Nil,'Item 6')),TObject(1)] := TObject(6);
		SelectItem[ItemByIndex[2]] := True;
	end;
	EndUpdate();
	OutputDebugString( Export('','all') );
end
			 
		 
	 
   | 
  | 
	1234
   | 
  
	  Bolds only the expanded items 
	
		
			
 
 
with AxGrid1 do
begin
	BeginUpdate();
	HeaderAppearance := EXGRIDLib.AppearanceEnum.Etched;
	HeaderHeight := 24;
	LinesAtRoot := EXGRIDLib.LinesAtRootEnum.exLinesAtRoot;
	ConditionalFormats.Add('%CX0',Nil).Bold := True;
	Columns.Add('Description');
	with Items do
	begin
		h := AddItem('Root 1');
		InsertItem(h,Nil,'Child 1');
		InsertItem(InsertItem(h,Nil,'Child 2'),Nil,'Sub-Child 2');
		CellState[TObject(InsertItem(h,Nil,'Child 3')),TObject(0)] := 1;
		ExpandItem[h] := True;
		h := AddItem('Root 2');
		InsertItem(h,Nil,'Child 1');
		InsertItem(h,Nil,'Child 2');
		InsertItem(h,Nil,'Child 3');
	end;
	EndUpdate();
end
			 
		 
	 
   | 
  | 
	1233
   | 
  
	  Displays the root item's index and value/caption using expressions 
	
		
			
 
 
with AxGrid1 do
begin
	BeginUpdate();
	HeaderAppearance := EXGRIDLib.AppearanceEnum.Etched;
	HeaderHeight := 24;
	LinesAtRoot := EXGRIDLib.LinesAtRootEnum.exLinesAtRoot;
	AutoDrag := EXGRIDLib.AutoDragEnum.exAutoDragPositionAny;
	AllowCopyPaste := Integer(EXGRIDLib.AllowCopyPasteEnum.exAllowPaste) Or Integer(EXGRIDLib.AllowCopyPasteEnum.exAllowCut) Or Integer(EXGRIDLib.AllowCopyPasteEnum.exAllowCopy);
	SingleSel := False;
	DrawGridLines := EXGRIDLib.GridLinesEnum.exRowLines;
	GridLineStyle := EXGRIDLib.GridLinesStyleEnum.exGridLinesSolid;
	GridLineColor := Color.FromArgb(208,208,208);
	ConditionalFormats.Add('%CC0 and %CX0',Nil).Bold := True;
	with ConditionalFormats.Add('1',Nil) do
	begin
		Bold := True;
		ApplyTo := EXGRIDLib.FormatApplyToEnum($2);
	end;
	with (Columns.Add('Description') as EXGRIDLib.Column) do
	begin
		Def[EXGRIDLib.DefColumnEnum.exCellHasCheckBox] := TObject(True);
		PartialCheck := True;
	end;
	with (Columns.Add('Index') as EXGRIDLib.Column) do
	begin
		FormatColumn := '1 index ``';
		Position := 0;
		Width := 16;
	end;
	with (Columns.Add('Root-Index') as EXGRIDLib.Column) do
	begin
		FormatColumn := 'root(1 index ``)';
		Position := 1;
		Width := 32;
		Def[EXGRIDLib.DefColumnEnum.exCellBackColor] := TObject(15790320);
	end;
	with (Columns.Add('Root-Value') as EXGRIDLib.Column) do
	begin
		FormatColumn := 'root(%0)';
		Position := 2;
		Width := 32;
		Def[EXGRIDLib.DefColumnEnum.exCellBackColor] := TObject(15790320);
	end;
	with Items do
	begin
		h := AddItem('Root 1');
		InsertItem(h,Nil,'Child 1');
		InsertItem(InsertItem(h,Nil,'Child 2'),Nil,'Sub-Child 2');
		CellState[TObject(InsertItem(h,Nil,'Child 3')),TObject(0)] := 1;
		ExpandItem[h] := True;
		h := AddItem('Root 2');
		InsertItem(h,Nil,'Child 1');
		InsertItem(h,Nil,'Child 2');
		InsertItem(h,Nil,'Child 3');
		ExpandItem[h] := True;
	end;
	EndUpdate();
end
			 
		 
	 
   | 
  | 
	1232
   | 
  
	  Displays the parent item's index and caption/value using expressions 
	
		
			
 
 
with AxGrid1 do
begin
	BeginUpdate();
	HeaderAppearance := EXGRIDLib.AppearanceEnum.Etched;
	HeaderHeight := 24;
	LinesAtRoot := EXGRIDLib.LinesAtRootEnum.exLinesAtRoot;
	AutoDrag := EXGRIDLib.AutoDragEnum.exAutoDragPositionAny;
	AllowCopyPaste := Integer(EXGRIDLib.AllowCopyPasteEnum.exAllowPaste) Or Integer(EXGRIDLib.AllowCopyPasteEnum.exAllowCut) Or Integer(EXGRIDLib.AllowCopyPasteEnum.exAllowCopy);
	SingleSel := False;
	DrawGridLines := EXGRIDLib.GridLinesEnum.exRowLines;
	GridLineStyle := EXGRIDLib.GridLinesStyleEnum.exGridLinesSolid;
	GridLineColor := Color.FromArgb(208,208,208);
	ConditionalFormats.Add('%CC0 and %CX0',Nil).Bold := True;
	with ConditionalFormats.Add('1',Nil) do
	begin
		Bold := True;
		ApplyTo := EXGRIDLib.FormatApplyToEnum($2);
	end;
	with (Columns.Add('Description') as EXGRIDLib.Column) do
	begin
		Def[EXGRIDLib.DefColumnEnum.exCellHasCheckBox] := TObject(True);
		PartialCheck := True;
	end;
	with (Columns.Add('Index') as EXGRIDLib.Column) do
	begin
		FormatColumn := '1 index `I`';
		Position := 0;
		Width := 16;
	end;
	with (Columns.Add('Parent-Index') as EXGRIDLib.Column) do
	begin
		FormatColumn := 'parent(1 index `I`)';
		Position := 1;
		Width := 32;
		Def[EXGRIDLib.DefColumnEnum.exCellBackColor] := TObject(15790320);
	end;
	with (Columns.Add('Parent-Value') as EXGRIDLib.Column) do
	begin
		FormatColumn := 'parent(%0)';
		Position := 2;
		Width := 32;
		Def[EXGRIDLib.DefColumnEnum.exCellBackColor] := TObject(15790320);
	end;
	with Items do
	begin
		h := AddItem('Root 1');
		InsertItem(h,Nil,'Child 1');
		InsertItem(InsertItem(h,Nil,'Child 2'),Nil,'Sub-Child 2');
		CellState[TObject(InsertItem(h,Nil,'Child 3')),TObject(0)] := 1;
		ExpandItem[h] := True;
		h := AddItem('Root 2');
		InsertItem(h,Nil,'Child 1');
		InsertItem(h,Nil,'Child 2');
		InsertItem(h,Nil,'Child 3');
		ExpandItem[h] := True;
	end;
	EndUpdate();
end
			 
		 
	 
   | 
  | 
	1231
   | 
  
	  Copying and Pasting the Selection Programmatically 
	
		
			
with AxGrid1 do
begin
	BeginUpdate();
	Columns.Add('Tasks');
	LinesAtRoot := EXGRIDLib.LinesAtRootEnum.exLinesAtRoot;
	SingleSel := False;
	with Items do
	begin
		AddItem('Tasks');
		SelectItem[AddItem('Task 1')] := True;
		SelectItem[AddItem('Task 2')] := True;
	end;
	IndentSelection(TObject(False));
	CopySelection();
	Items.UnselectAll();
	Paste(Nil);
	EndUpdate();
end
			 
		 
	 
   | 
  | 
	1230
   | 
  
	  Enable Copy, Cut and Paste Clipboard operations 
	
		
			
with AxGrid1 do
begin
	BeginUpdate();
	Columns.Add('Tasks');
	LinesAtRoot := EXGRIDLib.LinesAtRootEnum.exLinesAtRoot;
	AllowCopyPaste := Integer(EXGRIDLib.AllowCopyPasteEnum.exAllowPaste) Or Integer(EXGRIDLib.AllowCopyPasteEnum.exAllowCut) Or Integer(EXGRIDLib.AllowCopyPasteEnum.exAllowCopy);
	SingleSel := False;
	with Items do
	begin
		AddItem('Tasks');
		SelectItem[AddItem('Task 1')] := True;
		SelectItem[AddItem('Task 2')] := True;
	end;
	IndentSelection(TObject(False));
	EndUpdate();
end
			 
		 
	 
   | 
  | 
	1229
   | 
  
	  Adjusts the hierarchy of selected items by changing their parent 
	
		
			
 
 
with AxGrid1 do
begin
	BeginUpdate();
	Columns.Add('Tasks');
	LinesAtRoot := EXGRIDLib.LinesAtRootEnum.exLinesAtRoot;
	SingleSel := False;
	with Items do
	begin
		AddItem('Tasks');
		SelectItem[AddItem('Task A')] := True;
		SelectItem[AddItem('Task B')] := True;
	end;
	IndentSelection(TObject(False));
	EndUpdate();
end
			 
		 
	 
   | 
  | 
	1228
   | 
  
	  Specify the size of the Columns panel 
	
		
			
 
 
with AxGrid1 do
begin
	BeginUpdate();
	HeaderHeight := 24;
	HeaderAppearance := EXGRIDLib.AppearanceEnum.Etched;
	with Columns do
	begin
		Add('City');
		(Add('Start') as EXGRIDLib.Column).Visible := False;
		(Add('End') as EXGRIDLib.Column).Visible := False;
	end;
	ColumnsFloatBarRect := ',,96';
	ColumnsFloatBarVisible := Integer(EXGRIDLib.ColumnsFloatBarVisibleEnum.exColumnsFloatBarVisibleAsChild) Or Integer(EXGRIDLib.ColumnsFloatBarVisibleEnum.exColumnsFloatBarVisibleIncludeCheckColumns);
	EndUpdate();
end
			 
		 
	 
   | 
  | 
	1227
   | 
  
	  Show a vertical line between pivot and Columns panel (EBN color) 
	
		
			
 
 
with AxGrid1 do
begin
	BeginUpdate();
	VisualAppearance.Add(1,'gBFLBCJwBAEHhEJAAEhABRsIQAAYAQGKIYBkAKBQAGaAoDDUNQxQwAAxwfBMKgBBCLIxhEYobgmGIXRpFICQTIcBhaGIZRiAKCRTDmHwyRCNIwCLD8QxtDqBY4gOZZXh' + 
	'al4cJTgMaBYi+Pw3DZHcbvBRkewzHQAKgnSjoDhEMg1CTVVYTDKdOSzDyEX7sIAACpOIZQVJVEY1VT8cyxIyEZimSypWqiYJ0Ty6cQwTAIgI');
	set_Background(EXGRIDLib.BackgroundPartEnum.exColumnsFloatBackColor,$1000000);
	HeaderHeight := 24;
	HeaderAppearance := EXGRIDLib.AppearanceEnum.Etched;
	with Columns do
	begin
		Add('City');
		(Add('Start') as EXGRIDLib.Column).Visible := False;
		(Add('End') as EXGRIDLib.Column).Visible := False;
	end;
	ColumnsFloatBarVisible := Integer(EXGRIDLib.ColumnsFloatBarVisibleEnum.exColumnsFloatBarVisibleAsChild) Or Integer(EXGRIDLib.ColumnsFloatBarVisibleEnum.exColumnsFloatBarVisibleIncludeCheckColumns);
	EndUpdate();
end
			 
		 
	 
   | 
  | 
	1226
   | 
  
	  Change the background of the Columns panel (EBN color) 
	
		
			
 
 
with AxGrid1 do
begin
	BeginUpdate();
	VisualAppearance.Add(1,'gBFLBCJwBAEHhEJAAEhABNoCg6AADACAxRDAMgBQKAAzQFAYahqGKGAAGOD4JhUAIIRZGMIjFDcEwxC6NIpAWLoJDCH4mSTHYxgJIMWwzDiBZgkCA4fiGEYnThCIxzTJ' + 
	'0aw1CKbYRAKCUKoUAJFsSnQAJIgOO4lULPMIhDDQKQTIKBahoehqIhaEQyDSJNb2DCIahhMSEbKtCooDhGFZUWzLVxTJJNawHJqJJDuOTpSjKH4+RjWFKUXR9b4BJSNA' + 
	'gqeCQTiSWZEVxRUS0XbGCyZLSQY7uAAMKgOVoDYzdGLwHTtOwrMa1QAsDSbKqWZ5uRpHcQ5aAGN5DPbMbqwOaqLznAaLQLtG4RTikVRPTDYaj437+OaHGyNbI6HTNPpT' + 
	'lWDJWjYXI8l8C4fg6GYAAEEISgGJJGHQOocgyIwYnqKhYAAIQTH2MYRjQJBRAmZptmEAYIjGU5dk8UgOFgBJUgCTQIBYBoBmCCAmAqApghgDJUDmYQFCCZoEk2OBUm+B' + 
	'ZPCgZgagaYZIHYHoHmGWBcm8NwiEiFJVgmYgji4Kg6GKSI2C6C5jAiRgygwIojiycINkyeJmAYPJjkiTg+g+ZAIkCdIQkyWQWDuDxkBkJhKguZAzlIRQzGQc5ODWFJlE' + 
	'kVhWhWZYJFYTYTmUE4yF6F5mAmBhihiZhJhYX4WmQaAUnWGpOlmNhuhuZwJkYcocmcSY4naHZlkmKhrDuJ5JnYfofmgCgGgKIJnlmXJ2h4TQKBosRokoNoOiOaQKDSd4' + 
	'kmiChMncPBpgoZoaiaaZKHaHonmmE5iiKJRpDicomimaoKiaKoqmqSoeiIPgogqPotiyaxKlYPA+GuCqbBMa5KnaPovmwCwGj6LgP24RIhiyCwmkqMpsksNpKD6LQLBq' + 
	'OIzi0SxWlaHZtAOahPssM5Wi+IYtlsXpijKbZ5lyTo5mAE4UlqOpjHOQpEjubyanKPJvEuNgVj2TY1CCao+k2G52AyP5wAwBp9DYZZ1CCaxsAABAEICA');
	set_Background(EXGRIDLib.BackgroundPartEnum.exColumnsFloatBackColor,$1000000);
	HeaderHeight := 24;
	HeaderAppearance := EXGRIDLib.AppearanceEnum.Etched;
	with Columns do
	begin
		Add('City');
		(Add('Start') as EXGRIDLib.Column).Visible := False;
		(Add('End') as EXGRIDLib.Column).Visible := False;
	end;
	ColumnsFloatBarVisible := Integer(EXGRIDLib.ColumnsFloatBarVisibleEnum.exColumnsFloatBarVisibleAsChild) Or Integer(EXGRIDLib.ColumnsFloatBarVisibleEnum.exColumnsFloatBarVisibleIncludeCheckColumns);
	EndUpdate();
end
			 
		 
	 
   | 
  | 
	1225
   | 
  
	  Change the background of the Columns panel (solid color) 
	
		
			
 
 
with AxGrid1 do
begin
	BeginUpdate();
	HeaderHeight := 24;
	HeaderAppearance := EXGRIDLib.AppearanceEnum.Etched;
	with Columns do
	begin
		Add('City');
		(Add('Start') as EXGRIDLib.Column).Visible := False;
		(Add('End') as EXGRIDLib.Column).Visible := False;
	end;
	ColumnsFloatBarVisible := Integer(EXGRIDLib.ColumnsFloatBarVisibleEnum.exColumnsFloatBarVisibleAsChild) Or Integer(EXGRIDLib.ColumnsFloatBarVisibleEnum.exColumnsFloatBarVisibleIncludeCheckColumns);
	set_Background(EXGRIDLib.BackgroundPartEnum.exColumnsFloatBackColor,$f0f0f0);
	EndUpdate();
end
			 
		 
	 
   | 
  | 
	1224
   | 
  
	  Change the visual appearance of the Columns panel 
	
		
			
 
 
with AxGrid1 do
begin
	BeginUpdate();
	VisualAppearance.Add(1,'gBFLBCJwBAEHhEJAAEhABNoCg6AADACAxRDAMgBQKAAzQFAYahqGKGAAGOD4JhUAIIRZGMIjFDcEwxC6NIpAWLoJDCH4mSTHYxgJIMWwzDiBZgkCA4fiGEYnThCIxzTJ' + 
	'0aw1CKbYRAKCUKoUAJFsSnQAJIgOO4lULPMIhDDQKQTIKBahoehqIhaEQyDSJNb2DCIahhMSEbKtCooDhGFZUWzLVxTJJNawHJqJJDuOTpSjKH4+RjWFKUXR9b4BJSNA' + 
	'gqeCQTiSWZEVxRUS0XbGCyZLSQY7uAAMKgOVoDYzdGLwHTtOwrMa1QAsDSbKqWZ5uRpHcQ5aAGN5DPbMbqwOaqLznAaLQLtG4RTikVRPTDYaj437+OaHGyNbI6HTNPpT' + 
	'lWDJWjYXI8l8C4fg6GYAAEEISgGJJGHQOocgyIwYnqKhYAAIQTH2MYRjQJBRAmZptmEAYIjGU5dk8UgOFgBJUgCTQIBYBoBmCCAmAqApghgDJUDmYQFCCZoEk2OBUm+B' + 
	'ZPCgZgagaYZIHYHoHmGWBcm8NwiEiFJVgmYgji4Kg6GKSI2C6C5jAiRgygwIojiycINkyeJmAYPJjkiTg+g+ZAIkCdIQkyWQWDuDxkBkJhKguZAzlIRQzGQc5ODWFJlE' + 
	'kVhWhWZYJFYTYTmUE4yF6F5mAmBhihiZhJhYX4WmQaAUnWGpOlmNhuhuZwJkYcocmcSY4naHZlkmKhrDuJ5JnYfofmgCgGgKIJnlmXJ2h4TQKBosRokoNoOiOaQKDSd4' + 
	'kmiChMncPBpgoZoaiaaZKHaHonmmE5iiKJRpDicomimaoKiaKoqmqSoeiIPgogqPotiyaxKlYPA+GuCqbBMa5KnaPovmwCwGj6LgP24RIhiyCwmkqMpsksNpKD6LQLBq' + 
	'OIzi0SxWlaHZtAOahPssM5Wi+IYtlsXpijKbZ5lyTo5mAE4UlqOpjHOQpEjubyanKPJvEuNgVj2TY1CCao+k2G52AyP5wAwBp9DYZZ1CCaxsAABAEICA');
	set_Background(EXGRIDLib.BackgroundPartEnum.exColumnsFloatAppearance,$1000000);
	set_Background(EXGRIDLib.BackgroundPartEnum.exColumnsFloatCaptionBackColor,$f6f6f6);
	(GetOcx() as EXGRIDLib.Grid).BackColorHeader := $1000000;
	HeaderHeight := 24;
	HeaderAppearance := EXGRIDLib.AppearanceEnum.Etched;
	with Columns do
	begin
		Add('City');
		(Add('Start') as EXGRIDLib.Column).Visible := False;
		(Add('End') as EXGRIDLib.Column).Visible := False;
	end;
	set_Description(EXGRIDLib.DescriptionTypeEnum.exColumnsFloatBar,'Show/Hide');
	ColumnsFloatBarVisible := EXGRIDLib.ColumnsFloatBarVisibleEnum.exColumnsFloatBarVisibleIncludeCheckColumns;
	EndUpdate();
end
			 
		 
	 
   | 
  | 
	1223
   | 
  
	  Defines the symbol used to indicate repeated captions, providing a clear visual cue for identical entries (ditto mark) 
	
		
			
 
 
with AxGrid1 do
begin
	BeginUpdate();
	HeaderAppearance := EXGRIDLib.AppearanceEnum.Etched;
	HeaderHeight := 24;
	DrawGridLines := EXGRIDLib.GridLinesEnum.exRowLines;
	(Columns.Add('Country') as EXGRIDLib.Column).ShowIdem := '<fgcolor gray>〃';
	with Items do
	begin
		AddItem('Spain');
		AddItem('Spain');
		AddItem('Spain');
		AddItem('Spain');
		AddItem('Germany');
		AddItem('Germany');
		AddItem('Germany');
		AddItem('Germany');
	end;
	EndUpdate();
end
			 
		 
	 
   | 
  | 
	1222
   | 
  
	  Defines the symbol used to indicate repeated captions, providing a clear visual cue for identical entries (space) 
	
		
			
 
 
with AxGrid1 do
begin
	BeginUpdate();
	HeaderAppearance := EXGRIDLib.AppearanceEnum.Etched;
	HeaderHeight := 24;
	DrawGridLines := EXGRIDLib.GridLinesEnum.exRowLines;
	(Columns.Add('Country') as EXGRIDLib.Column).ShowIdem := ' ';
	with Items do
	begin
		AddItem('Spain');
		AddItem('Spain');
		AddItem('Spain');
		AddItem('Spain');
		AddItem('Germany');
		AddItem('Germany');
		AddItem('Germany');
		AddItem('Germany');
	end;
	EndUpdate();
end
			 
		 
	 
   | 
  | 
	1221
   | 
  
	  Displays a glitch funnel for drop-down filter buttons (empty or active) 
	
		
			
 
 
with AxGrid1 do
begin
	BeginUpdate();
	with VisualAppearance do
	begin
		RenderType := -1;
		Add(1,'gBFLBCJwBAEHhEJAAEhABa8IQAAYAQGKIYBkAKBQAGaAoDDUNQxQwAAxwfBMKgBBCLIxhEYobgmGIXRpFMbxCKQahLEiTIhGUYJHgmK4tRiAUgxVDkBxrECZYqjcBZOi' + 
	'wLQ2TxDM7DNKUCBnIoABhGOaYDh+IQNQjUFKwTRFGRxK4EIRKAyTDLQdRyGSMMbjdQpBCbMiMRqhESKRq2UwYRYCFS1NalaztO6BUAvK67YrWez/YBfF+SfwGeqDYReW' + 
	'APfgWERnQrGMLxbD8KwZAKTRjkGJ4XhuB41TbQMqufL9ByXHKSSDpGjaXjeO5VVjYNAvS69UzXNq3bhtQAOXCMEwCgI=');
		Add(2,'CP:1 -2 0 0 0');
	end;
	DrawGridLines := EXGRIDLib.GridLinesEnum.exAllLines;
	GridLineStyle := EXGRIDLib.GridLinesStyleEnum.exGridLinesGeometric;
	ShowFocusRect := False;
	set_Background(EXGRIDLib.BackgroundPartEnum.exHeaderFilterBarButton,$2000000);
	set_Background(EXGRIDLib.BackgroundPartEnum.exHeaderFilterBarActive,$2000001);
	HeaderAppearance := EXGRIDLib.AppearanceEnum.Etched;
	BackColorHeader := Color.FromArgb(255,255,255);
	HeaderHeight := 24;
	HeaderVisible := True;
	with (Columns.Add('1st col') as EXGRIDLib.Column) do
	begin
		DisplayFilterButton := True;
		DisplayFilterPattern := False;
		Filter := 'Item B';
		FilterType := EXGRIDLib.FilterTypeEnum.exFilter;
	end;
	Columns.Add('2nd col');
	with Items do
	begin
		AddItem('Item A');
		AddItem('Item B');
		AddItem('Item C');
	end;
	ApplyFilter();
	EndUpdate();
end
			 
		 
	 
   | 
  | 
	1220
   | 
  
	  How can I store any extra data associated with a cell 
	
		
			
// ButtonClick event - Occurs when user clicks on the cell's button.
procedure TWinForm1.AxGrid1_ButtonClick(sender: System.Object; e: AxEXGRIDLib._IGridEvents_ButtonClickEvent);
begin
	with AxGrid1 do
	begin
		OutputDebugString( Items.CellData[TObject(e.item),TObject(e.colIndex)] );
	end
end;
with AxGrid1 do
begin
	BeginUpdate();
	HeaderAppearance := EXGRIDLib.AppearanceEnum.Etched;
	with (Columns.Add('Def') as EXGRIDLib.Column).Editor do
	begin
		EditType := EXGRIDLib.EditTypeEnum.ButtonType;
		Locked := True;
	end;
	with Items do
	begin
		CellData[TObject(AddItem('Cell 1')),TObject(0)] := 'your extra data for cell 1';
		CellData[TObject(AddItem('Cell 2')),TObject(0)] := 'your extra data for cell 2';
	end;
	EndUpdate();
end
			 
		 
	 
   | 
  | 
	1219
   | 
  
	  How can I replace or add an icon at runtime 
	
		
			
 
 
with AxGrid1 do
begin
	BeginUpdate();
	ReplaceIcon('gAAAABgYACEHgUJFEEAAWhUJCEJEEJggEhMCYEXjUbjkJQECj8gj8hAEjkshYEpk8kf8ClsulsvAExmcvf83js5nU7nkCeEcn8boMaocXosCB9Hn09pkzcEuoL/fE+Ok' + 
	'YB0gB9YhIHrddgVcr9aktZADAD8+P8CgIA==',Nil);
	ReplaceIcon('C:\images\favicon.ico',TObject(0));
	(Columns.Add('Items') as EXGRIDLib.Column).Def[EXGRIDLib.DefColumnEnum.exCellValueFormat] := TObject(1);
	Items.AddItem('Item <img>1</img>');
	EndUpdate();
end
			 
		 
	 
   | 
  | 
	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.
procedure TWinForm1.AxGrid1_ClickEvent(sender: System.Object; e: System.EventArgs);
begin
	with AxGrid1 do
	begin
		Layout := 'Select="0";SingleSort="C0:2";Columns=1';
	end
end;
with AxGrid1 do
begin
	BeginUpdate();
	Columns.Add('Column');
	with Items do
	begin
		AddItem('Item 1');
		AddItem('Item 2');
		AddItem('Item 3');
	end;
	EndUpdate();
end
			 
		 
	 
   | 
  | 
	1217
   | 
  
	  How can I add totals to groups without having to go through the AddGroupItem grid function 
	
		
			
 
 
with AxGrid1 do
begin
	FreezeEvents(True);
	BeginUpdate();
	HeaderAppearance := EXGRIDLib.AppearanceEnum.Etched;
	HeaderHeight := 24;
	LinesAtRoot := EXGRIDLib.LinesAtRootEnum.exLinesAtRoot;
	with ConditionalFormats do
	begin
		with Add('%CT1',Nil) do
		begin
			ForeColor := $808080;
			ApplyTo := EXGRIDLib.FormatApplyToEnum($1);
		end;
		with Add('%CT2',Nil) do
		begin
			ForeColor := $808080;
			ApplyTo := EXGRIDLib.FormatApplyToEnum($2);
		end;
		with Add('%CT3',Nil) do
		begin
			ForeColor := $808080;
			ApplyTo := EXGRIDLib.FormatApplyToEnum($3);
		end;
	end;
	with Columns do
	begin
		Add('Description');
		with (Add('Qty') as EXGRIDLib.Column) do
		begin
			Editor.EditType := EXGRIDLib.EditTypeEnum.SpinType;
			Def[EXGRIDLib.DefColumnEnum.exTotalColumn] := 'sum(current,rec,%1)';
		end;
		with (Add('Price') as EXGRIDLib.Column) do
		begin
			Def[EXGRIDLib.DefColumnEnum.exTotalColumn] := 'avg(current,rec,%2)';
			Editor.EditType := EXGRIDLib.EditTypeEnum.SpinType;
		end;
		with (Add('Amount') as EXGRIDLib.Column) do
		begin
			ComputedField := '%1 * %2';
			Def[EXGRIDLib.DefColumnEnum.exTotalColumn] := 'sum(current,rec,%3)';
		end;
	end;
	with Items do
	begin
		r := AddItem('Root');
		g1 := InsertItem(r,Nil,'Group 1');
		h := InsertItem(g1,Nil,'Item 1');
		CellValue[TObject(h),TObject(1)] := TObject(1);
		CellValue[TObject(h),TObject(2)] := TObject(10);
		h := InsertItem(g1,Nil,'Item 2');
		CellValue[TObject(h),TObject(1)] := TObject(2);
		CellValue[TObject(h),TObject(2)] := TObject(11);
		g2 := InsertItem(r,Nil,'Group 2');
		h := InsertItem(g2,Nil,'Item 1');
		CellValue[TObject(h),TObject(1)] := TObject(3);
		CellValue[TObject(h),TObject(2)] := TObject(12);
		h := InsertItem(g2,Nil,'Item 2');
		CellValue[TObject(h),TObject(1)] := TObject(4);
		CellValue[TObject(h),TObject(2)] := TObject(13);
		ExpandItem[0] := True;
	end;
	EndUpdate();
	FreezeEvents(False);
end
			 
		 
	 
   | 
  | 
	1216
   | 
  
	  How can I configure the filters in the text columns to search by content 
	
		
			
 
 
with AxGrid1 do
begin
	BeginUpdate();
	FilterBarPromptVisible := EXGRIDLib.FilterBarVisibleEnum.exFilterBarPromptVisible;
	HeaderAppearance := EXGRIDLib.AppearanceEnum.None2;
	FilterBarPromptType := EXGRIDLib.FilterPromptEnum.exFilterPromptContainsAll;
	Columns.Add('Names');
	with Items do
	begin
		AddItem('Mantel');
		AddItem('Mechanik');
		AddItem('Motor');
		AddItem('Murks');
		AddItem('Märchen');
		AddItem('Möhren');
		AddItem('Mühle');
		AddItem('Sérigraphie');
	end;
	FilterBarPromptPattern := 'a';
	EndUpdate();
end
			 
		 
	 
   | 
  | 
	1215
   | 
  
	  How can I display the control's captions in Spanish 
	
		
			
 
 
with AxGrid1 do
begin
	BeginUpdate();
	FilterBarPromptVisible := EXGRIDLib.FilterBarVisibleEnum.exFilterBarPromptVisible;
	HeaderAppearance := EXGRIDLib.AppearanceEnum.None2;
	set_Description(EXGRIDLib.DescriptionTypeEnum.exFilterBarAll,'(todo) ');
	set_Description(EXGRIDLib.DescriptionTypeEnum.exFilterBarFilterForCaption,'filtrar por...');
	FilterBarPrompt := '<i><fgcolor=808080>iniciar filtro...</fgcolor></i>';
	with (Columns.Add('Names') as EXGRIDLib.Column) do
	begin
		DisplayFilterButton := True;
		FilterType := EXGRIDLib.FilterTypeEnum.exPattern;
	end;
	with Items do
	begin
		AddItem('Mantel');
		AddItem('Mechanik');
		AddItem('Motor');
		AddItem('Murks');
		AddItem('Märchen');
		AddItem('Möhren');
		AddItem('Mühle');
		AddItem('Sérigraphie');
	end;
	EndUpdate();
end
			 
		 
	 
   | 
  | 
	1214
   | 
  
	  How can I zoom in the control 
	
		
			
 
 
with AxGrid1 do
begin
	BeginUpdate();
	s1 := 16;
	s2 := FormatABC('2 * value',TObject(s1),Nil,Nil);
	ImageSize := s2;
	DefaultItemHeight := s2;
	HeaderHeight := s2;
	SortBarHeight := s2;
	Indent := s2;
	Font.Size := s1;
	FilterBarFont.Size := s1;
	ToolTipFont.Size := s1;
	FilterBarPromptVisible := EXGRIDLib.FilterBarVisibleEnum.exFilterBarPromptVisible;
	HeaderAppearance := EXGRIDLib.AppearanceEnum.None2;
	with (Columns.Add('Names') as EXGRIDLib.Column) do
	begin
		DisplayFilterButton := True;
		FilterType := EXGRIDLib.FilterTypeEnum.exPattern;
	end;
	with Items do
	begin
		AddItem('Mantel');
		AddItem('Mechanik');
		AddItem('Motor');
		AddItem('Murks');
		AddItem('Märchen');
		AddItem('Möhren');
		AddItem('Mühle');
		AddItem('Sérigraphie');
	end;
	EndUpdate();
end
			 
		 
	 
   | 
  | 
	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 
	
		
			
 
 
with AxGrid1 do
begin
	BeginUpdate();
	HeaderAppearance := EXGRIDLib.AppearanceEnum.Etched;
	HeaderHeight := 24;
	LinesAtRoot := EXGRIDLib.LinesAtRootEnum.exLinesAtRoot;
	with (Columns.Add('Items') as EXGRIDLib.Column) do
	begin
		DisplayFilterButton := True;
		DisplayFilterPattern := True;
		Def[EXGRIDLib.DefColumnEnum.exFilterPatternTemplate] := '*<%filter%>*';
		FilterType := EXGRIDLib.FilterTypeEnum.exPattern;
		Filter := '1';
	end;
	with Items do
	begin
		h := AddItem('Root 1');
		InsertItem(h,Nil,'Child 1');
		InsertItem(h,Nil,'Child 2');
		ExpandItem[h] := True;
		h := AddItem('Root 2');
		InsertItem(h,Nil,'Child 1');
		InsertItem(h,Nil,'Child 2');
	end;
	ApplyFilter();
	EndUpdate();
end
			 
		 
	 
   | 
  | 
	1212
   | 
  
	  The fine dotted lines in the control appear much thicker than the standard ones we've been using. How can we fix this 
	
		
			
 
 
with AxGrid1 do
begin
	BeginUpdate();
	HeaderAppearance := EXGRIDLib.AppearanceEnum.Etched;
	HeaderHeight := 24;
	DrawGridLines := EXGRIDLib.GridLinesEnum.exAllLines;
	GridLineStyle := EXGRIDLib.GridLinesStyleEnum.exGridLinesGeometric;
	ColumnAutoResize := False;
	Columns.Add('Column 1');
	Columns.Add('Column 2');
	Columns.Add('Column 3');
	Columns.Add('Column 4');
	EndUpdate();
end
			 
		 
	 
   | 
  | 
	1211
   | 
  
	  Load data as a tree using a parent-id relationship 
	
		
			
 
 
with AxGrid1 do
begin
	BeginUpdate();
	ColumnAutoResize := False;
	HeaderAppearance := EXGRIDLib.AppearanceEnum.Etched;
	HeaderHeight := 24;
	DrawGridLines := EXGRIDLib.GridLinesEnum.exVLines;
	LinesAtRoot := EXGRIDLib.LinesAtRootEnum.exLinesAtRoot;
	rs := (ComObj.CreateComObject(ComObj.ProgIDToClassID('ADODB.Recordset')) as ADODB.Recordset);
	with rs do
	begin
		Open('Select * FROM Employees WHERE 1=0','Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Program Files\Exontrol\ExGrid\Sample\Access\misc.mdb',3,3,Nil);
	end;
	DataSource := (rs as ADODB.Recordset);
	Columns.Item[TObject(0)].Width := 128;
	rs := (ComObj.CreateComObject(ComObj.ProgIDToClassID('ADODB.Recordset')) as ADODB.Recordset);
	with rs do
	begin
		Open('Employees','Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Program Files\Exontrol\ExGrid\Sample\Access\misc.mdb',3,3,Nil);
	end;
	PutItems(rs.GetRows(Nil,Nil,Nil),';0;17');
	Items.ExpandItem[0] := True;
	EndUpdate();
end
			 
		 
	 
   | 
  | 
	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.
procedure TWinForm1.AxGrid1_AddItem(sender: System.Object; e: AxEXGRIDLib._IGridEvents_AddItemEvent);
begin
	with AxGrid1 do
	begin
		Items.CellEditorVisible[TObject(e.item),TObject(0)] := EXGRIDLib.EditorVisibleEnum.exEditorVisible;
		Items.CellEditorVisible[TObject(e.item),TObject(1)] := EXGRIDLib.EditorVisibleEnum.exEditorVisible;
	end
end;
// EditOpen event - Occurs when the edit operation starts.
procedure TWinForm1.AxGrid1_EditOpen(sender: System.Object; e: System.EventArgs);
begin
	with AxGrid1 do
	begin
		with Items do
		begin
			v := CellValue[TObject(FocusItem),TObject(0)];
			c := CellCaption[TObject(FocusItem),TObject(0)];
		end;
		with Columns.Item[TObject(1)].Editor do
		begin
			ClearItems();
			AddItem(v,c,Nil);
		end;
	end
end;
with AxGrid1 do
begin
	BeginUpdate();
	HeaderAppearance := EXGRIDLib.AppearanceEnum.Etched;
	HeaderHeight := 24;
	GridLineStyle := EXGRIDLib.GridLinesStyleEnum.exGridLinesGeometric;
	with (Columns.Add('DropDownList') as EXGRIDLib.Column) do
	begin
		with Editor do
		begin
			EditType := EXGRIDLib.EditTypeEnum.DropDownListType;
			AddItem(1,'First',Nil);
			AddItem(2,'Second',Nil);
			AddItem(3,'Third',Nil);
		end;
	end;
	DrawGridLines := EXGRIDLib.GridLinesEnum.exAllLines;
	(Columns.Add('DropDownList-Related') as EXGRIDLib.Column).Editor.EditType := EXGRIDLib.EditTypeEnum.DropDownListType;
	with Items do
	begin
		CellValue[TObject(AddItem(TObject(1))),TObject(1)] := TObject(-1);
		CellValue[TObject(AddItem(TObject(2))),TObject(1)] := TObject(-1);
		CellValue[TObject(AddItem(TObject(3))),TObject(1)] := TObject(-1);
		LockedItemCount[EXGRIDLib.VAlignmentEnum.exBottom] := 1;
		h := LockedItem[EXGRIDLib.VAlignmentEnum.exBottom,0];
		ItemDivider[h] := 0;
		ItemDividerLineAlignment[h] := EXGRIDLib.DividerAlignmentEnum.DividerTop;
		CellEditorVisible[TObject(h),TObject(0)] := EXGRIDLib.EditorVisibleEnum.exEditorHidden;
		CellSingleLine[TObject(h),TObject(0)] := EXGRIDLib.CellSingleLineEnum.exCaptionWordWrap;
		CellValueFormat[TObject(h),TObject(0)] := EXGRIDLib.ValueFormatEnum.exHTML;
		CellValue[TObject(h),TObject(0)] := '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.';
	end;
	EndUpdate();
end
			 
		 
	 
   | 
  | 
	1209
   | 
  
	  Highlight the editable fields 
	
		
			
 
 
// Change event - Occurs when the user changes the cell's content.
procedure TWinForm1.AxGrid1_Change(sender: System.Object; e: AxEXGRIDLib._IGridEvents_ChangeEvent);
begin
	with AxGrid1 do
	begin
		Refresh();
	end
end;
with AxGrid1 do
begin
	FreezeEvents(True);
	BeginUpdate();
	HeaderAppearance := EXGRIDLib.AppearanceEnum.Etched;
	HeaderHeight := 24;
	LinesAtRoot := EXGRIDLib.LinesAtRootEnum.exLinesAtRoot;
	with ConditionalFormats do
	begin
		with Add('%CE1',Nil) do
		begin
			Bold := True;
			BackColor := $f5f5f5;
			ApplyTo := EXGRIDLib.FormatApplyToEnum($1);
		end;
		with Add('%CE2',Nil) do
		begin
			Bold := True;
			BackColor := $f5f5f5;
			ApplyTo := EXGRIDLib.FormatApplyToEnum($2);
		end;
		with Add('%CE3',Nil) do
		begin
			Bold := True;
			BackColor := $f5f5f5;
			ApplyTo := EXGRIDLib.FormatApplyToEnum($3);
		end;
	end;
	with Columns do
	begin
		Add('Description');
		with (Add('Qty') as EXGRIDLib.Column) do
		begin
			Editor.EditType := EXGRIDLib.EditTypeEnum.SpinType;
			Def[EXGRIDLib.DefColumnEnum.exTotalColumn] := 'sum(current,rec,%1)';
		end;
		with (Add('Price') as EXGRIDLib.Column) do
		begin
			Def[EXGRIDLib.DefColumnEnum.exTotalColumn] := 'avg(current,rec,%2)';
			Editor.EditType := EXGRIDLib.EditTypeEnum.SpinType;
		end;
		with (Add('Amount') as EXGRIDLib.Column) do
		begin
			ComputedField := '%1 * %2';
			Def[EXGRIDLib.DefColumnEnum.exTotalColumn] := 'sum(current,rec,%3)';
		end;
	end;
	with Items do
	begin
		r := AddItem('Root');
		g1 := InsertItem(r,Nil,'Group 1');
		h := InsertItem(g1,Nil,'Item 1');
		CellValue[TObject(h),TObject(1)] := TObject(1);
		CellValue[TObject(h),TObject(2)] := TObject(10);
		h := InsertItem(g1,Nil,'Item 2');
		CellValue[TObject(h),TObject(1)] := TObject(2);
		CellValue[TObject(h),TObject(2)] := TObject(11);
		g2 := InsertItem(r,Nil,'Group 2');
		h := InsertItem(g2,Nil,'Item 1');
		CellValue[TObject(h),TObject(1)] := TObject(3);
		CellValue[TObject(h),TObject(2)] := TObject(12);
		h := InsertItem(g2,Nil,'Item 2');
		CellValue[TObject(h),TObject(1)] := TObject(4);
		CellValue[TObject(h),TObject(2)] := TObject(13);
		ExpandItem[0] := True;
	end;
	EndUpdate();
	FreezeEvents(False);
end
			 
		 
	 
   | 
  | 
	1208
   | 
  
	  Highlight the total fields 
	
		
			
 
 
// Change event - Occurs when the user changes the cell's content.
procedure TWinForm1.AxGrid1_Change(sender: System.Object; e: AxEXGRIDLib._IGridEvents_ChangeEvent);
begin
	with AxGrid1 do
	begin
		Refresh();
	end
end;
with AxGrid1 do
begin
	FreezeEvents(True);
	BeginUpdate();
	HeaderAppearance := EXGRIDLib.AppearanceEnum.Etched;
	HeaderHeight := 24;
	LinesAtRoot := EXGRIDLib.LinesAtRootEnum.exLinesAtRoot;
	with ConditionalFormats do
	begin
		with Add('%CT1',Nil) do
		begin
			ForeColor := $808080;
			ApplyTo := EXGRIDLib.FormatApplyToEnum($1);
		end;
		with Add('%CT2',Nil) do
		begin
			ForeColor := $808080;
			ApplyTo := EXGRIDLib.FormatApplyToEnum($2);
		end;
		with Add('%CT3',Nil) do
		begin
			ForeColor := $808080;
			ApplyTo := EXGRIDLib.FormatApplyToEnum($3);
		end;
	end;
	with Columns do
	begin
		Add('Description');
		with (Add('Qty') as EXGRIDLib.Column) do
		begin
			Editor.EditType := EXGRIDLib.EditTypeEnum.SpinType;
			Def[EXGRIDLib.DefColumnEnum.exTotalColumn] := 'sum(current,rec,%1)';
		end;
		with (Add('Price') as EXGRIDLib.Column) do
		begin
			Def[EXGRIDLib.DefColumnEnum.exTotalColumn] := 'avg(current,rec,%2)';
			Editor.EditType := EXGRIDLib.EditTypeEnum.SpinType;
		end;
		with (Add('Amount') as EXGRIDLib.Column) do
		begin
			ComputedField := '%1 * %2';
			Def[EXGRIDLib.DefColumnEnum.exTotalColumn] := 'sum(current,rec,%3)';
		end;
	end;
	with Items do
	begin
		r := AddItem('Root');
		g1 := InsertItem(r,Nil,'Group 1');
		h := InsertItem(g1,Nil,'Item 1');
		CellValue[TObject(h),TObject(1)] := TObject(1);
		CellValue[TObject(h),TObject(2)] := TObject(10);
		h := InsertItem(g1,Nil,'Item 2');
		CellValue[TObject(h),TObject(1)] := TObject(2);
		CellValue[TObject(h),TObject(2)] := TObject(11);
		g2 := InsertItem(r,Nil,'Group 2');
		h := InsertItem(g2,Nil,'Item 1');
		CellValue[TObject(h),TObject(1)] := TObject(3);
		CellValue[TObject(h),TObject(2)] := TObject(12);
		h := InsertItem(g2,Nil,'Item 2');
		CellValue[TObject(h),TObject(1)] := TObject(4);
		CellValue[TObject(h),TObject(2)] := TObject(13);
		ExpandItem[0] := True;
	end;
	EndUpdate();
	FreezeEvents(False);
end
			 
		 
	 
   | 
  | 
	1207
   | 
  
	  Highlight the leaf items 
	
		
			
 
 
with AxGrid1 do
begin
	BeginUpdate();
	ConditionalFormats.Add('%CC0=0',Nil).ForeColor := $808080;
	HeaderAppearance := EXGRIDLib.AppearanceEnum.Etched;
	HeaderHeight := 24;
	LinesAtRoot := EXGRIDLib.LinesAtRootEnum.exLinesAtRoot;
	with Columns do
	begin
		(Add('Item') as EXGRIDLib.Column).Width := 16;
		Add('Desc');
	end;
	with Items do
	begin
		hR := AddItem('Root');
		CellValue[TObject(hR),TObject(1)] := 'The root directory /';
		ExpandItem[hR] := True;
		h := InsertItem(hR,Nil,'Home');
		CellValue[TObject(h),TObject(1)] := 'The home directory with user directories Alice and Bob';
		InsertItem(h,Nil,'Alice');
		InsertItem(h,Nil,'Bob');
		ExpandItem[h] := True;
		h := InsertItem(hR,Nil,'Etc');
		CellValue[TObject(h),TObject(1)] := 'The etc directory with one configuration file';
		h := InsertItem(h,Nil,'nginx.conf');
		CellValue[TObject(InsertItem(hR,Nil,'Var')),TObject(1)] := 'The var directory';
	end;
	EndUpdate();
end
			 
		 
	 
   | 
  | 
	1206
   | 
  
	  Highlight the parent items 
	
		
			
 
 
with AxGrid1 do
begin
	BeginUpdate();
	ConditionalFormats.Add('%CC0',Nil).ForeColor := $ff;
	HeaderAppearance := EXGRIDLib.AppearanceEnum.Etched;
	HeaderHeight := 24;
	LinesAtRoot := EXGRIDLib.LinesAtRootEnum.exLinesAtRoot;
	with Columns do
	begin
		(Add('Item') as EXGRIDLib.Column).Width := 16;
		Add('Desc');
	end;
	with Items do
	begin
		hR := AddItem('Root');
		CellValue[TObject(hR),TObject(1)] := 'The root directory /';
		ExpandItem[hR] := True;
		h := InsertItem(hR,Nil,'Home');
		CellValue[TObject(h),TObject(1)] := 'The home directory with user directories Alice and Bob';
		InsertItem(h,Nil,'Alice');
		InsertItem(h,Nil,'Bob');
		ExpandItem[h] := True;
		h := InsertItem(hR,Nil,'Etc');
		CellValue[TObject(h),TObject(1)] := 'The etc directory with one configuration file';
		h := InsertItem(h,Nil,'nginx.conf');
		CellValue[TObject(InsertItem(hR,Nil,'Var')),TObject(1)] := 'The var directory';
	end;
	EndUpdate();
end
			 
		 
	 
   | 
  | 
	1205
   | 
  
	  Highlight the item being expanded or collapsed 
	
		
			
 
 
with AxGrid1 do
begin
	BeginUpdate();
	ConditionalFormats.Add('%CX0',Nil).Bold := True;
	HeaderAppearance := EXGRIDLib.AppearanceEnum.Etched;
	HeaderHeight := 24;
	LinesAtRoot := EXGRIDLib.LinesAtRootEnum.exLinesAtRoot;
	with Columns do
	begin
		(Add('Item') as EXGRIDLib.Column).Width := 16;
		Add('Desc');
	end;
	with Items do
	begin
		hR := AddItem('Root');
		CellValue[TObject(hR),TObject(1)] := 'The root directory /';
		ExpandItem[hR] := True;
		h := InsertItem(hR,Nil,'Home');
		CellValue[TObject(h),TObject(1)] := 'The home directory with user directories Alice and Bob';
		InsertItem(h,Nil,'Alice');
		InsertItem(h,Nil,'Bob');
		ExpandItem[h] := True;
		h := InsertItem(hR,Nil,'Etc');
		CellValue[TObject(h),TObject(1)] := 'The etc directory with one configuration file';
		h := InsertItem(h,Nil,'nginx.conf');
		CellValue[TObject(InsertItem(hR,Nil,'Var')),TObject(1)] := 'The var directory';
	end;
	EndUpdate();
end
			 
		 
	 
   | 
  | 
	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.
procedure TWinForm1.AxGrid1_Change(sender: System.Object; e: AxEXGRIDLib._IGridEvents_ChangeEvent);
begin
	with AxGrid1 do
	begin
		Refresh();
	end
end;
with AxGrid1 do
begin
	FreezeEvents(True);
	BeginUpdate();
	HeaderAppearance := EXGRIDLib.AppearanceEnum.Etched;
	HeaderHeight := 24;
	LinesAtRoot := EXGRIDLib.LinesAtRootEnum.exLinesAtRoot;
	with Columns do
	begin
		Add('Description');
		with (Add('Qty') as EXGRIDLib.Column) do
		begin
			Editor.EditType := EXGRIDLib.EditTypeEnum.SpinType;
			Def[EXGRIDLib.DefColumnEnum.exTotalColumn] := 'sum(current,rec,%1)';
		end;
		with (Add('Price') as EXGRIDLib.Column) do
		begin
			Def[EXGRIDLib.DefColumnEnum.exTotalColumn] := 'avg(current,rec,%2)';
			Editor.EditType := EXGRIDLib.EditTypeEnum.SpinType;
		end;
		with (Add('Amount') as EXGRIDLib.Column) do
		begin
			ComputedField := '%1 * %2';
			Def[EXGRIDLib.DefColumnEnum.exTotalColumn] := 'sum(current,rec,%3)';
		end;
	end;
	with Items do
	begin
		r := AddItem('Root');
		g1 := InsertItem(r,Nil,'Group 1');
		FormatCell[TObject(g1),TObject(2)] := '`<average missing>`';
		CellEditorVisible[TObject(g1),TObject(2)] := EXGRIDLib.EditorVisibleEnum.exEditorHidden;
		CellBold[TObject(g1),TObject(2)] := True;
		CellForeColor[TObject(g1),TObject(2)] := $ff;
		h := InsertItem(g1,Nil,'Item 1');
		CellValue[TObject(h),TObject(1)] := TObject(1);
		CellValue[TObject(h),TObject(2)] := TObject(10);
		h := InsertItem(g1,Nil,'Item 2');
		CellValue[TObject(h),TObject(1)] := TObject(2);
		CellValue[TObject(h),TObject(2)] := TObject(11);
		g2 := InsertItem(r,Nil,'Group 2');
		h := InsertItem(g2,Nil,'Item 1');
		CellValue[TObject(h),TObject(1)] := TObject(3);
		CellValue[TObject(h),TObject(2)] := TObject(12);
		h := InsertItem(g2,Nil,'Item 2');
		CellValue[TObject(h),TObject(1)] := TObject(4);
		CellValue[TObject(h),TObject(2)] := TObject(13);
		ExpandItem[0] := True;
	end;
	EndUpdate();
	FreezeEvents(False);
end
			 
		 
	 
   | 
  | 
	1203
   | 
  
	  How can I add a total column 
	
		
			
 
 
// Change event - Occurs when the user changes the cell's content.
procedure TWinForm1.AxGrid1_Change(sender: System.Object; e: AxEXGRIDLib._IGridEvents_ChangeEvent);
begin
	with AxGrid1 do
	begin
		Refresh();
	end
end;
with AxGrid1 do
begin
	FreezeEvents(True);
	BeginUpdate();
	HeaderAppearance := EXGRIDLib.AppearanceEnum.Etched;
	HeaderHeight := 24;
	LinesAtRoot := EXGRIDLib.LinesAtRootEnum.exLinesAtRoot;
	with Columns do
	begin
		Add('Description');
		with (Add('Qty') as EXGRIDLib.Column) do
		begin
			Editor.EditType := EXGRIDLib.EditTypeEnum.SpinType;
			Def[EXGRIDLib.DefColumnEnum.exTotalColumn] := 'sum(current,rec,%1)';
		end;
		with (Add('Price') as EXGRIDLib.Column) do
		begin
			Def[EXGRIDLib.DefColumnEnum.exTotalColumn] := 'avg(current,rec,%2)';
			Editor.EditType := EXGRIDLib.EditTypeEnum.SpinType;
		end;
		with (Add('Amount') as EXGRIDLib.Column) do
		begin
			ComputedField := '%1 * %2';
			Def[EXGRIDLib.DefColumnEnum.exTotalColumn] := 'sum(current,rec,%3)';
		end;
	end;
	with Items do
	begin
		r := AddItem('Root');
		g1 := InsertItem(r,Nil,'Group 1');
		h := InsertItem(g1,Nil,'Item 1');
		CellValue[TObject(h),TObject(1)] := TObject(1);
		CellValue[TObject(h),TObject(2)] := TObject(10);
		h := InsertItem(g1,Nil,'Item 2');
		CellValue[TObject(h),TObject(1)] := TObject(2);
		CellValue[TObject(h),TObject(2)] := TObject(11);
		g2 := InsertItem(r,Nil,'Group 2');
		h := InsertItem(g2,Nil,'Item 1');
		CellValue[TObject(h),TObject(1)] := TObject(3);
		CellValue[TObject(h),TObject(2)] := TObject(12);
		h := InsertItem(g2,Nil,'Item 2');
		CellValue[TObject(h),TObject(1)] := TObject(4);
		CellValue[TObject(h),TObject(2)] := TObject(13);
		ExpandItem[0] := True;
	end;
	EndUpdate();
	FreezeEvents(False);
end
			 
		 
	 
   | 
  | 
	1202
   | 
  
	  Is it possible to disable sizing(size) the column 
	
		
			
with AxGrid1 do
begin
	BeginUpdate();
	HeaderAppearance := EXGRIDLib.AppearanceEnum.Etched;
	DrawGridLines := EXGRIDLib.GridLinesEnum.exVLines;
	with (Columns.Add('32px') as EXGRIDLib.Column) do
	begin
		Width := 32;
		AllowSizing := False;
	end;
	Columns.Add('Rest');
	ColumnAutoResize := True;
	EndUpdate();
end
			 
		 
	 
   | 
  | 
	1201
   | 
  
	  How can I add two columns of 25% and the third of 50% 
	
		
			
 
 
with AxGrid1 do
begin
	BeginUpdate();
	HeaderAppearance := EXGRIDLib.AppearanceEnum.Etched;
	DrawGridLines := EXGRIDLib.GridLinesEnum.exVLines;
	(Columns.Add('25%') as EXGRIDLib.Column).Width := 25;
	(Columns.Add('25%') as EXGRIDLib.Column).Width := 25;
	(Columns.Add('50%') as EXGRIDLib.Column).Width := 50;
	ColumnAutoResize := True;
	EndUpdate();
end
			 
		 
	 
   |