724
Highlight the match once the filter is applied

// FilterChange event - Notifies your application that the filter is changed.
procedure TForm1.Tree1FilterChange(ASender: TObject; );
begin
	with Tree1 do
	begin
		format := FormatABC('`lower(value) replace lower(''` + value + `'') with ''<bgcolor 000000><fgcolor FFFFFF>` + value  + `</fgcolor></bgcolor>''`',OleVariant(FilterBarPromptPattern),Null,Null);
		Columns.Item[OleVariant(0)].FormatColumn := format;
		Columns.Item[OleVariant(1)].FormatColumn := format;
		Columns.Item[OleVariant(2)].FormatColumn := format;
	end
end;

with Tree1 do
begin
	BeginUpdate();
	SelBackColor := BackColor;
	SelForeColor := ForeColor;
	ColumnAutoResize := True;
	ContinueColumnScroll := False;
	MarkSearchColumn := False;
	SearchColumnIndex := 1;
	HeaderAppearance := EXTREELib_TLB.Etched;
	HeaderHeight := 23;
	BackColorLevelHeader := BackColor;
	FilterBarCaption := '`<b>` + value + `</b><r><fgcolor=808080>` + ( matchitemcount < 0 ? abs(matchitemcount + 1) + ` result(s)` : ``)';
	FilterBarPromptVisible := Integer(EXTREELib_TLB.exFilterBarCompact) Or Integer(EXTREELib_TLB.exFilterBarCaptionVisible) Or Integer(EXTREELib_TLB.exFilterBarVisible) Or Integer(EXTREELib_TLB.exFilterBarPromptVisible);
	FilterBarBackColor := BackColor;
	FilterBarPromptPattern := 'and';
	with Columns do
	begin
		with (IUnknown(Add('Name')) as EXTREELib_TLB.Column) do
		begin
			Def[EXTREELib_TLB.exCellCaptionFormat] := OleVariant(1);
			FormatColumn := 'lower(value)';
		end;
		with (IUnknown(Add('Title')) as EXTREELib_TLB.Column) do
		begin
			Def[EXTREELib_TLB.exCellCaptionFormat] := OleVariant(1);
			FormatColumn := 'lower(value)';
		end;
		with (IUnknown(Add('City')) as EXTREELib_TLB.Column) do
		begin
			Def[EXTREELib_TLB.exCellCaptionFormat] := OleVariant(1);
			FormatColumn := 'lower(value)';
		end;
	end;
	with Items do
	begin
		h0 := AddItem('Nancy Davolio');
		CellCaption[OleVariant(h0),OleVariant(1)] := 'Sales Representative';
		CellCaption[OleVariant(h0),OleVariant(2)] := 'Seattle';
		h0 := AddItem('Andrew Fuller');
		CellCaption[OleVariant(h0),OleVariant(1)] := 'Vice President, Sales';
		CellCaption[OleVariant(h0),OleVariant(2)] := 'Tacoma';
		SelectItem[h0] := True;
		h0 := AddItem('Janet Leverling');
		CellCaption[OleVariant(h0),OleVariant(1)] := 'Sales Representative';
		CellCaption[OleVariant(h0),OleVariant(2)] := 'Kirkland';
		h0 := AddItem('Margaret Peacock');
		CellCaption[OleVariant(h0),OleVariant(1)] := 'Sales Representative';
		CellCaption[OleVariant(h0),OleVariant(2)] := 'Redmond';
		h0 := AddItem('Steven Buchanan');
		CellCaption[OleVariant(h0),OleVariant(1)] := 'Sales Manager';
		CellCaption[OleVariant(h0),OleVariant(2)] := 'London';
		h0 := AddItem('Michael Suyama');
		CellCaption[OleVariant(h0),OleVariant(1)] := 'Sales Representative';
		CellCaption[OleVariant(h0),OleVariant(2)] := 'London';
		h0 := AddItem('Robert King');
		CellCaption[OleVariant(h0),OleVariant(1)] := 'Sales Representative';
		CellCaption[OleVariant(h0),OleVariant(2)] := 'London';
		h0 := AddItem('Laura Callahan');
		CellCaption[OleVariant(h0),OleVariant(1)] := 'Inside Sales Coordinator';
		CellCaption[OleVariant(h0),OleVariant(2)] := 'Seattle';
		h0 := AddItem('Anne Dodsworth');
		CellCaption[OleVariant(h0),OleVariant(1)] := 'Sales Representative';
		CellCaption[OleVariant(h0),OleVariant(2)] := 'London';
	end;
	EndUpdate();
end
723
ADOR, MDB (JET)

with Tree1 do
begin
	ColumnAutoResize := False;
	ContinueColumnScroll := False;
	rs := (IUnknown(ComObj.CreateComObject(ComObj.ProgIDToClassID('ADOR.Recordset'))) as ADODB_TLB.Recordset);
	with rs do
	begin
		Open('Orders','Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Program Files\Exontrol\ExTree\Sample\Access\sample.mdb',3,3,Null);
	end;
	DataSource := (IUnknown(rs) as ADODB_TLB.Recordset);
end
722
Re-order the cell's caption, icons and images/pictures

with Tree1 do
begin
	BeginUpdate();
	Images('gBJJgBAICAADAAEAAQhYAf8Pf4hh0QihCJo2AEZjQAjEZFEaIEahkZAIAEEbjMjlErlktl0vmExmUzmk1m03nE5nU7nk9n0/oFBoVDolFo1HpFJpVLplNp1PqFRqVTql' + 
	'Vq1XrFZrVbrlTiFdib/sNjr9gs1nldlrlqtFtt0stlguNvulyh91ud1vVVvNuvt7wFHr9/vl3luEwOJouIq+Dw2KyGRyWTymVy2XzGZzUuiw+lmej0gkUaksljaAnmDc' + 
	'D/cEbf7w1+ufD/fEbeB028bYAO3enB6AB++4EoA4A4sb4vHjXJ4nG5vKAHA4ca6XBjTAD/Y2x/eB/jcB');
	with (IUnknown(Columns.Add('ToLeft')) as EXTREELib_TLB.Column) do
	begin
		Def[EXTREELib_TLB.exCellHasCheckBox] := OleVariant(True);
	end;
	with (IUnknown(Columns.Add('ToRight')) as EXTREELib_TLB.Column) do
	begin
		Def[EXTREELib_TLB.exCellHasCheckBox] := OleVariant(True);
		Def[EXTREELib_TLB.exCellDrawPartsOrder] := 'caption,picture,icons,icon,check';
	end;
	DefaultItemHeight := 32;
	DrawGridLines := EXTREELib_TLB.exVLines;
	HeaderAppearance := EXTREELib_TLB.Etched;
	with Items do
	begin
		h := AddItem('Caption');
		CellImage[OleVariant(h),OleVariant(0)] := 2;
		CellImages[OleVariant(h),OleVariant(0)] := '1,2';
		CellPicture[OleVariant(h),OleVariant(0)] := (IUnknown(Tree1.ExecuteTemplate('loadpicture(`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' + 
	'Gw+wbHkkTpEw7gpFgIAA2sABJEUThEK4QhgIJAQ==`)')) as _TLB.Object);
		CellCaption[OleVariant(h),OleVariant(1)] := CellCaption[OleVariant(h),OleVariant(0)];
		CellHAlignment[OleVariant(h),OleVariant(1)] := EXTREELib_TLB.RightAlignment;
		CellImage[OleVariant(h),OleVariant(1)] := CellImage[OleVariant(h),OleVariant(0)];
		CellImages[OleVariant(h),OleVariant(1)] := '2,1';
		CellPicture[OleVariant(h),OleVariant(1)] := (IUnknown(CellPicture[OleVariant(h),OleVariant(0)]) as _TLB.Object);
		h := AddItem('<b>HTML</b> <off 4>Caption');
		CellCaptionFormat[OleVariant(h),OleVariant(0)] := EXTREELib_TLB.exHTML;
		CellImage[OleVariant(h),OleVariant(0)] := 2;
		CellImages[OleVariant(h),OleVariant(0)] := '1,2';
		CellPicture[OleVariant(h),OleVariant(0)] := (IUnknown(Tree1.ExecuteTemplate('loadpicture(`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' + 
	'Gw+wbHkkTpEw7gpFgIAA2sABJEUThEK4QhgIJAQ==`)')) as _TLB.Object);
		CellCaption[OleVariant(h),OleVariant(1)] := CellCaption[OleVariant(h),OleVariant(0)];
		CellCaptionFormat[OleVariant(h),OleVariant(1)] := EXTREELib_TLB.exHTML;
		CellHAlignment[OleVariant(h),OleVariant(1)] := EXTREELib_TLB.RightAlignment;
		CellImage[OleVariant(h),OleVariant(1)] := CellImage[OleVariant(h),OleVariant(0)];
		CellImages[OleVariant(h),OleVariant(1)] := '2,1';
		CellPicture[OleVariant(h),OleVariant(1)] := (IUnknown(CellPicture[OleVariant(h),OleVariant(0)]) as _TLB.Object);
	end;
	EndUpdate();
end
721
ImageSize property on 32 (specifies the size of control' icons/images/check-boxes/radio-buttons)

// AddColumn event - Fired after a new column has been added.
procedure TForm1.Tree1AddColumn(ASender: TObject; Column : IColumn);
begin
	// Column.Def(48) = 2
	// Column.Def(49) = 2
end;

with Tree1 do
begin
	BeginUpdate();
	ImageSize := 32;
	DefaultItemHeight := 36;
	HeaderHeight := DefaultItemHeight;
	SortBarHeight := DefaultItemHeight;
	Font.Size := 16;
	FilterBarFont.Size := Tree1.Font.Size;
	ToolTipFont.Size := Tree1.Font.Size;
	Indent := 26;
	Images('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');
	with VisualAppearance do
	begin
		Add(1,'gBFLBCJwBAEHhEJAAEhABfICg6AADACAxRDgMQBQKAAzQFAYbhkGCGAAGMZxRgmFgAQhFcZQSKUOQTDKMIziaQAGgkNQwCSLIwjNIsBxPFKVQChEYxSjKA40SJNUgyj6' + 
	'CCY+QLIE5PfQgAL9I6eJABCCSQKkYx0HScRiwPBIbAZAYhCZqaKhWgkKI/WBQIABRDVLx5ESiLRtKy7Mq2bpvXBcNxXHalaztO68LxvKyqHb5fJ/PpgL4YHgmC4NQ7EM' + 
	'RwF6rfbyfZ7Xg/ORPTijZ4sdzMHTzJyscx3HqfaBoOaZU5eMLceTUMofHIndxCcasPbsOatVqjG5sYjcGC3La9cz3Pq/bpuDCbMxuaK1TrYXr1TTrcofBDldAxXRKDxR' + 
	'DWVhLnYOw9i6XxzjuXprCaOoKB6EwbiCZZCGOdZYlcT4xHmbhMnwNxtn+G5bmqdZ7n4Pw/i+X5zm+dQ9g4CAFjsfAJheOI8HsDoWDWTB/lwSAQkmA5PEgRYoDyDwYFYF' + 
	'oFmGCBmBqBphDgRJ0gOTIYBGRB/lyRh0iSCZbjYWJzgWDwIjYLoLmMCJGDKDJjBgWgqG6YhyhGHRzA2aJ1mCABOAiOJvhCZBJBYRoRmSCQmEqEQimkAZgg8TZnDCV4Uk' + 
	'mCUmBKZYJGYWoWCUUhiFMNZckNUh2GENoaGaGZmgmJhqhqZpGGIEx2GYIxSGGGJdggWJth2Z4JmYeoemeSZ2H6H4hGmQhihyTRHGYLg7CiCgmgqIpokoNoOiOaJ4jqAo' + 
	'chqaZGgaCxpAoZoaiaaJqEmWIcGgShcnCJwqEqFoR3YOoFlgchflqNouiuawHmWSYqGkWZQhcatzmaOoumuSp2j6L5bBaKo0GQKRnGGCxqiyCwmkqMpsksNpOGUGI7A0' + 
	'ew1G0Rxlg0PptgsZuDG2Sx2l6N5tnYNZZjUDRXDCVo5l2FoymqOpukuNpujubwLjmWY5k0ZwxkaFxYlWdp6j6b5Lnafo/nABQdg2FxcUsY5BkmXAkmeQpckwNRrkKTh8' + 
	'CSHZBk4NwyC4KxxgMDwakOMZDn8GgwnGAo2C4cwthMcwmCcMoHBMHRehwTIghySYNksZwcH4HBMEsHx5hyPItiweYxnwSZEH4Mozn0fR+DMAo7EYJ50gkdZelKdNql2U' + 
	'gJn0GIukwH4HicQRai2GI4mSVpNl0dZGledgNgcYpYDWUx3FsOQi5YV5anaTY3G6W53A2RxylydxFjiaxEFCCgBBAQ==');
		Add(2,'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' + 
	'RBCCQAgQEA==');
		Add(3,'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');
		Add(4,'gBFLBCJwBAEHhEJAAEhABUYCg6AADACAxRDgMQBQKAAzQFAYbhkGCGAAGMZxRgmFgAQhFcZQSKUOQTDKMIziYBYfgkMIgSbJUgDGAkRRdDSOYDmGQYDiCIoRShOMIjHL' + 
	'UXxtDaIZwhEAoJb+RgAUY/cTzaAEUwHHiTKInaCQShsFYJUJAdRURQ9EwvCIZBpEWwLChENQwWLCNj2TScBwjCyqbale45ViqdoDU5EUiXJJ8ZxnECfYyrGjaMpCeKBU' + 
	'rGYTVRBIMxLLSia5oeJqMrnBpNVrIUgXCAGFwHK6BcauXIIDp6XoWWRbAAWDpVVzNNC3YzkCIceADHKiXxmVz4JLdGZ1QTGID2XaYaxWK4oZjsVSc4KDHbETbHFi9Fo3' + 
	'NaaxGisew+GYc4HlCR5NAAAIIEkQJSGMOgdE4RhYDwJJsAaAYQgmPpolCWgSCiBJzjcEIAkQXIBm8d5UhOQgCDUIBDDJDhgggJgKgKYJIDSVoDk8KBFF4OohEMZgWDsY' + 
	'YDj4GoGmGSB2B6B5iAiBgYDsYRjGSbIJo4RgqDuIpIAoLoLmMCJGDKDJjJiLA7xqUAAgGTwYnYPoPmQCQGEKEJkEkFg9gGY44BoRoSmSSQ2EKEggHgRhShSZRJFYVoVm' + 
	'WCRmFKFAgGOTheheZgJgYYoYmYSYWGaF4lkMMJ0hqZpJjYbobmcCZGHKHJmjmJh0h2Z4JmYcIaE8WZ2H6H5oAoBoCiCaBKBYfdjGoJoKiKaJKDaDojmkChGgmIgpCoVo' + 
	'WiWaJZiSd4mmmSh2h6J5qAqBoiiiaY5iSeIpmqComiqKpqkqNouiuah6hqMIsmsSpWiuGhP1kOoumuSp2j6L5sAsBo54gKwWkaMZsgsJpKjKbJLDaRYxYWRpSjSbIZiS' + 
	'e41m2CxmlqNptksdpejebR5iSfI4m4S4W16boLiaao6m5fJ9jubwLkaco8m8S5WnaPZunuOp4j6b5Lnac4SA0PAGlgP4wEwFwGkGcIMCcCpCnCCxiA8NYAAmMJfkSbhF' + 
	'CcFpFnGDBnBqRpUhuEwTDeZ5lHCfw6HIQxLCaAxygyJwqgGcATE4FA6hWY4tjEAAQBAgIA==');
	end;
	BackColorHeader := $4c6c6c6;
	SelBackColor := $4000000;
	SelForeColor := RGB(0,0,1);
	CheckImage[EXTREELib_TLB.Unchecked] := 16777216;
	CheckImage[EXTREELib_TLB.Checked] := 33554432;
	CheckImage[EXTREELib_TLB.PartialChecked] := 50331648;
	Background[EXTREELib_TLB.exSelBackColorFilter] := SelBackColor;
	Background[EXTREELib_TLB.exSelForeColorFilter] := SelForeColor;
	Background[EXTREELib_TLB.exBackColorFilter] := BackColor;
	Background[EXTREELib_TLB.exForeColorFilter] := ForeColor;
	Background[EXTREELib_TLB.exCursorHoverColumn] := $ffffffff;
	Background[EXTREELib_TLB.exHeaderFilterBarButton] := $4000000;
	Background[EXTREELib_TLB.exHeaderFilterBarActive] := $4010101;
	Background[EXTREELib_TLB.exFooterFilterBarButton] := $40000ff;
	HeaderAppearance := EXTREELib_TLB.Etched;
	ShowFocusRect := False;
	SortBarVisible := True;
	BackColorSortBar := BackColor;
	BackColorLevelHeader := BackColor;
	FilterBarDropDownHeight := 1;
	with (IUnknown(Columns.Add('Check')) as EXTREELib_TLB.Column) do
	begin
		Def[EXTREELib_TLB.exCellHasCheckBox] := OleVariant(True);
		PartialCheck := True;
		Width := 128;
		DisplayFilterButton := True;
		FilterList := EXTREELib_TLB.exShowCheckBox;
	end;
	with (IUnknown(Columns.Add('Pos')) as EXTREELib_TLB.Column) do
	begin
		FormatColumn := '1 pos ``';
		AllowSort := False;
		Width := 48;
		AllowSizing := False;
		Alignment := EXTREELib_TLB.CenterAlignment;
		HeaderAlignment := EXTREELib_TLB.CenterAlignment;
	end;
	with (IUnknown(Columns.Add('Image')) as EXTREELib_TLB.Column) do
	begin
		DisplayFilterButton := True;
		FilterList := Integer(EXTREELib_TLB.exShowExclude) Or Integer(EXTREELib_TLB.exShowCheckBox) Or Integer(EXTREELib_TLB.exSortItemsAsc);
		FilterType := EXTREELib_TLB.exImage;
		DisplayExpandButton := True;
		ExpandColumns := '1,2,3';
		Width := 128;
		HeaderImage := 1;
	end;
	with (IUnknown(Columns.Add('Images')) as EXTREELib_TLB.Column) do
	begin
		Def[EXTREELib_TLB.exCellHasCheckBox] := OleVariant(True);
		Width := 196;
		HTMLCaption := '<img>1</img><img>2</img><img>3</img> Images';
	end;
	Columns.Item['Pos'].Position := 3;
	with Items do
	begin
		hR := AddItem('Root');
		ItemDivider[hR] := 0;
		ItemDividerLine[hR] := EXTREELib_TLB.EmptyLine;
		h := InsertItem(hR,Null,'Child A');
		CellImage[OleVariant(h),OleVariant(2)] := 1;
		CellImages[OleVariant(h),OleVariant(3)] := '1,2,3';
		CellCaption[OleVariant(h),OleVariant(3)] := '123';
		h := InsertItem(hR,Null,'Child B');
		CellState[OleVariant(h),OleVariant(0)] := 1;
		CellImage[OleVariant(h),OleVariant(2)] := 3;
		CellImages[OleVariant(h),OleVariant(3)] := '2,3,1';
		CellCaption[OleVariant(h),OleVariant(3)] := '231';
		SelectItem[h] := True;
		h := InsertItem(hR,Null,'Child C');
		CellImage[OleVariant(h),OleVariant(2)] := 2;
		CellState[OleVariant(h),OleVariant(3)] := 1;
		CellCaption[OleVariant(h),OleVariant(3)] := '312';
		CellImages[OleVariant(h),OleVariant(3)] := '3,1,2';
		ExpandItem[hR] := True;
	end;
	EndUpdate();
end
720
ImageSize property on 16 (default) (specifies the size of control' icons/images/check-boxes/radio-buttons)

// AddColumn event - Fired after a new column has been added.
procedure TForm1.Tree1AddColumn(ASender: TObject; Column : IColumn);
begin
	// Column.Def(48) = 2
	// Column.Def(49) = 2
end;

with Tree1 do
begin
	BeginUpdate();
	ImageSize := 16;
	Images('gBJJgBAIDAAEg4ACEKAD/hz/EMNh8TIRNGwAjEZAEXjAojJAjMLjABAAgjUYkUnlUrlktl0vmExmUzmk1m03nE5nU7nkrQCAntBoVDolFo1HoM/ADAplLptImdMYFOqd' + 
	'SqlXq1QrVbrlGpVWsFNrNdnNjsk7pQAtNroFnt0sh8Yr9iulTuNxs1Eu8OiT/vsnsNVutXlk/oGGtVKxGLxWNtsZtN8iUYuNvy0Zvd+xNYwdwvl4p870GCqc8vOeuVtt' + 
	'mp1knyOayWVy+WzN/ze1wOElenm+12WUz/Bv2/3UyyWrzeutux2GSyGP2dQ33C1ur3GD3M4zUNzHdlWjq/E3nGzVpjWv4HA7fRy/Tv2IrN8rPW6nZ3ve7mUlfu20Z8ac' + 
	'vQyb+vY9jasYoDwMm+LytVBDqKG3z8O3Cb8P+mkAuY9cCQ2uL4KaxDKvkp8RNLEjqugnrwQo/UWPzFyeQw5sNLZFENrI4kOqU66pw8uzmOKvTqNqjULJvGL1JO48GtTG' + 
	'sbLdEL3scxLlyiw8dQeoUVxdLTtyKmUjwGlslRPJsnK1HbAKbKCrsQo8uQk/CeP44iaR/ATnTNPLvyxPU+z9P9AUDQVBowiofJXQ6Oo+kKMpIkjztE4TKn4P6JowfgPn' + 
	'wD5/nAjB8AOeAPo0eAA1IAFH07UhAIMpYAVIYFHqBUhwVjV1S1EtQAHxW65V0AZwAeuQAnwB5gAPYViEDVhwAHTQBkCjB4gOhwDmCyhH0sACAg==');
	with VisualAppearance do
	begin
		Add(4,'gBFLBCJwBAEHhEJAAEhABUYCg6AADACAxRDgMQBQKAAzQFAYbhkGCGAAGMZxRgmFgAQhFcZQSKUOQTDKMIziYBYfgkMIgSbJUgDGAkRRdDSOYDmGQYDiCIoRShOMIjHL' + 
	'UXxtDaIZwhEAoJb+RgAUY/cTzaAEUwHHiTKInaCQShsFYJUJAdRURQ9EwvCIZBpEWwLChENQwWLCNj2TScBwjCyqbale45ViqdoDU5EUiXJJ8ZxnECfYyrGjaMpCeKBU' + 
	'rGYTVRBIMxLLSia5oeJqMrnBpNVrIUgXCAGFwHK6BcauXIIDp6XoWWRbAAWDpVVzNNC3YzkCIceADHKiXxmVz4JLdGZ1QTGID2XaYaxWK4oZjsVSc4KDHbETbHFi9Fo3' + 
	'NaaxGisew+GYc4HlCR5NAAAIIEkQJSGMOgdE4RhYDwJJsAaAYQgmPpolCWgSCiBJzjcEIAkQXIBm8d5UhOQgCDUIBDDJDhgggJgKgKYJIDSVoDk8KBFF4OohEMZgWDsY' + 
	'YDj4GoGmGSB2B6B5iAiBgYDsYRjGSbIJo4RgqDuIpIAoLoLmMCJGDKDJjJiLA7xqUAAgGTwYnYPoPmQCQGEKEJkEkFg9gGY44BoRoSmSSQ2EKEggHgRhShSZRJFYVoVm' + 
	'WCRmFKFAgGOTheheZgJgYYoYmYSYWGaF4lkMMJ0hqZpJjYbobmcCZGHKHJmjmJh0h2Z4JmYcIaE8WZ2H6H5oAoBoCiCaBKBYfdjGoJoKiKaJKDaDojmkChGgmIgpCoVo' + 
	'WiWaJZiSd4mmmSh2h6J5qAqBoiiiaY5iSeIpmqComiqKpqkqNouiuah6hqMIsmsSpWiuGhP1kOoumuSp2j6L5sAsBo54gKwWkaMZsgsJpKjKbJLDaRYxYWRpSjSbIZiS' + 
	'e41m2CxmlqNptksdpejebR5iSfI4m4S4W16boLiaao6m5fJ9jubwLkaco8m8S5WnaPZunuOp4j6b5Lnac4SA0PAGlgP4wEwFwGkGcIMCcCpCnCCxiA8NYAAmMJfkSbhF' + 
	'CcFpFnGDBnBqRpUhuEwTDeZ5lHCfw6HIQxLCaAxygyJwqgGcATE4FA6hWY4tjEAAQBAgIA==');
	end;
	BackColorHeader := $4c6c6c6;
	SelBackColor := $4000000;
	SelForeColor := RGB(0,0,1);
	Background[EXTREELib_TLB.exSelBackColorFilter] := SelBackColor;
	Background[EXTREELib_TLB.exSelForeColorFilter] := SelForeColor;
	Background[EXTREELib_TLB.exBackColorFilter] := BackColor;
	Background[EXTREELib_TLB.exForeColorFilter] := ForeColor;
	Background[EXTREELib_TLB.exCursorHoverColumn] := $ffffffff;
	Background[EXTREELib_TLB.exHeaderFilterBarButton] := $4000000;
	Background[EXTREELib_TLB.exHeaderFilterBarActive] := $4010101;
	Background[EXTREELib_TLB.exFooterFilterBarButton] := $40000ff;
	HeaderAppearance := EXTREELib_TLB.Etched;
	ShowFocusRect := False;
	SortBarVisible := True;
	BackColorSortBar := BackColor;
	BackColorLevelHeader := BackColor;
	FilterBarDropDownHeight := 1;
	with (IUnknown(Columns.Add('Check')) as EXTREELib_TLB.Column) do
	begin
		Def[EXTREELib_TLB.exCellHasCheckBox] := OleVariant(True);
		PartialCheck := True;
		Width := 128;
		DisplayFilterButton := True;
		FilterList := EXTREELib_TLB.exShowCheckBox;
	end;
	with (IUnknown(Columns.Add('Pos')) as EXTREELib_TLB.Column) do
	begin
		FormatColumn := '1 pos ``';
		AllowSort := False;
		Width := 48;
		AllowSizing := False;
		Alignment := EXTREELib_TLB.CenterAlignment;
		HeaderAlignment := EXTREELib_TLB.CenterAlignment;
	end;
	with (IUnknown(Columns.Add('Image')) as EXTREELib_TLB.Column) do
	begin
		DisplayFilterButton := True;
		FilterList := Integer(EXTREELib_TLB.exShowExclude) Or Integer(EXTREELib_TLB.exShowCheckBox) Or Integer(EXTREELib_TLB.exSortItemsAsc);
		FilterType := EXTREELib_TLB.exImage;
		DisplayExpandButton := True;
		ExpandColumns := '1,2,3';
		Width := 128;
		HeaderImage := 1;
	end;
	with (IUnknown(Columns.Add('Images')) as EXTREELib_TLB.Column) do
	begin
		Def[EXTREELib_TLB.exCellHasCheckBox] := OleVariant(True);
		Width := 196;
		HTMLCaption := '<img>1</img><img>2</img><img>3</img> Images';
	end;
	Columns.Item['Pos'].Position := 3;
	with Items do
	begin
		hR := AddItem('Root');
		ItemDivider[hR] := 0;
		ItemDividerLine[hR] := EXTREELib_TLB.EmptyLine;
		h := InsertItem(hR,Null,'Child A');
		CellImage[OleVariant(h),OleVariant(2)] := 1;
		CellImages[OleVariant(h),OleVariant(3)] := '1,2,3';
		CellCaption[OleVariant(h),OleVariant(3)] := '123';
		h := InsertItem(hR,Null,'Child B');
		CellState[OleVariant(h),OleVariant(0)] := 1;
		CellImage[OleVariant(h),OleVariant(2)] := 3;
		CellImages[OleVariant(h),OleVariant(3)] := '2,3,1';
		CellCaption[OleVariant(h),OleVariant(3)] := '231';
		SelectItem[h] := True;
		h := InsertItem(hR,Null,'Child C');
		CellImage[OleVariant(h),OleVariant(2)] := 2;
		CellState[OleVariant(h),OleVariant(3)] := 1;
		CellCaption[OleVariant(h),OleVariant(3)] := '312';
		CellImages[OleVariant(h),OleVariant(3)] := '3,1,2';
		ExpandItem[hR] := True;
	end;
	EndUpdate();
end
719
The user clicks the drop-down filter, select a value and the control's list filters for the selected item(s). Is there a way for when the user then goes to the next column to add another filter and the drop down arrow is clicked for the list of values they can filter by to be limited to what is being displayed in the list due to the first filter they set

// AddColumn event - Fired after a new column has been added.
procedure TForm1.Tree1AddColumn(ASender: TObject; Column : IColumn);
begin
	with Tree1 do
	begin
		with Column do
		begin
		end;
	end
end;

with Tree1 do
begin
	BeginUpdate();
	ColumnAutoResize := False;
	rs := (IUnknown(ComObj.CreateComObject(ComObj.ProgIDToClassID('ADOR.Recordset'))) as ADODB_TLB.Recordset);
	with rs do
	begin
		Open('Orders','Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Program Files\Exontrol\ExTree\Sample\Access\sample.accdb',3,3,Null);
	end;
	DataSource := (IUnknown(rs) as ADODB_TLB.Recordset);
	Columns.Item['ShipVia'].Position := 2;
	EndUpdate();
end
718
Is it possible to set from code, a column sort without being inserted in the sortbar

with Tree1 do
begin
	BeginUpdate();
	ColumnAutoResize := False;
	rs := (IUnknown(ComObj.CreateComObject(ComObj.ProgIDToClassID('ADOR.Recordset'))) as ADODB_TLB.Recordset);
	with rs do
	begin
		Open('Orders','Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Program Files\Exontrol\ExTree\Sample\Access\sample.accdb',1,3,Null);
	end;
	DataSource := (IUnknown(rs) as ADODB_TLB.Recordset);
	SortBarVisible := True;
	Layout := 'singlesort="C1:1"';
	EndUpdate();
end
717
Is it possible to view all events the control fires
// Event event - Notifies the application once the control fires an event.
procedure TForm1.Tree1Event(ASender: TObject; EventID : Integer);
begin
	with Tree1 do
	begin
		OutputDebugString( EventParam[-2] );
	end
end;

with Tree1 do
begin
	BeginUpdate();
	LinesAtRoot := EXTREELib_TLB.exLinesAtRoot;
	with (IUnknown(Columns.Add('Tasks')) as EXTREELib_TLB.Column) do
	begin
		Def[EXTREELib_TLB.exCellHasCheckBox] := OleVariant(True);
		PartialCheck := True;
		Def[EXTREELib_TLB.exCellCaptionFormat] := OleVariant(1);
		FormatColumn := 'value + (%CS0 = 1 ? `<r><fgcolor=808080>(checked)` : ``)';
	end;
	HeaderVisible := True;
	with Items do
	begin
		h := AddItem('Project');
		hChild := InsertItem(h,Null,'Task 1');
		SelectItem[hChild] := True;
		hChild := InsertItem(h,Null,'Task 2');
		CellState[OleVariant(hChild),OleVariant(0)] := 1;
		hChild := InsertItem(h,Null,'Task 3');
		CellState[OleVariant(hChild),OleVariant(0)] := 1;
		ExpandItem[h] := True;
	end;
	EndUpdate();
end
716
How can I prevent expanding/collapsing the child items

// BeforeExpandItem event - Fired before an item is about to be expanded (collapsed).
procedure TForm1.Tree1BeforeExpandItem(ASender: TObject; Item : HITEM;var Cancel : OleVariant);
begin
	with Tree1 do
	begin
		Cancel := Tree1.Items.ItemParent[Item];
	end
end;

with Tree1 do
begin
	BeginUpdate();
	SingleSel := False;
	Columns.Add('Default');
	LinesAtRoot := EXTREELib_TLB.exLinesAtRoot;
	with Items do
	begin
		h := AddItem('Root 1');
		InsertItem(InsertItem(h,Null,'Child 1.1'),Null,'Child');
		InsertItem(h,Null,'Child 1.2');
		ExpandItem[h] := True;
		h := AddItem('Root 2');
		InsertItem(InsertItem(h,Null,'Child 2.1'),Null,'Child');
		InsertItem(h,Null,'Child 2.2');
		ExpandItem[h] := True;
	end;
	EndUpdate();
end
715
How can I display an item of picture type

with Tree1 do
begin
	BeginUpdate();
	LinesAtRoot := EXTREELib_TLB.exLinesAtRoot;
	ScrollBySingleLine := False;
	HeaderAppearance := EXTREELib_TLB.Etched;
	HeaderHeight := 24;
	(IUnknown(Columns.Add('Artikel')) as EXTREELib_TLB.Column).HTMLCaption := '<u>Artikel';
	(IUnknown(Columns.Add('Waarde')) as EXTREELib_TLB.Column).HTMLCaption := '<u>Waarde';
	HTMLPicture['T22128'] := 'c:\exontrol\images\zipdisk.gif';
	with Items do
	begin
		h := AddItem('T22128-28)2D');
		h1 := InsertItem(h,Null,'<img>T22128:128</img>');
		CellCaptionFormat[OleVariant(h1),OleVariant(0)] := EXTREELib_TLB.exHTML;
		ItemHeight[h1] := 128;
		h1 := InsertItem(h,Null,'werkvoorbereiding');
		CellCaption[OleVariant(h1),OleVariant(1)] := '5.80';
		CellBold[OleVariant(h1),OleVariant(1)] := True;
		CellCaption[OleVariant(InsertItem(h1,Null,'Type')),OleVariant(1)] := 'Eenvoudig';
		CellCaption[OleVariant(InsertItem(h1,Null,'Prijs p/uur')),OleVariant(1)] := '60,00';
		CellCaption[OleVariant(InsertItem(h1,Null,'Marhe')),OleVariant(1)] := '15,00%';
		CellCaption[OleVariant(InsertItem(h1,Null,'Insteltijd min.')),OleVariant(1)] := '5,00';
		CellCaption[OleVariant(InsertItem(h1,Null,'Aantal')),OleVariant(1)] := OleVariant(1);
		CellCaption[OleVariant(InsertItem(h1,Null,'Kostprije')),OleVariant(1)] := '5,00';
		ExpandItem[h1] := True;
		h1 := InsertItem(h,Null,'materiall');
		CellCaption[OleVariant(h1),OleVariant(1)] := '14.82';
		CellBold[OleVariant(h1),OleVariant(1)] := True;
		ItemHasChildren[h1] := True;
		h1 := InsertItem(h,Null,'snijden');
		CellCaption[OleVariant(h1),OleVariant(1)] := '3.13';
		CellBold[OleVariant(h1),OleVariant(1)] := True;
		ItemHasChildren[h1] := True;
		ExpandItem[h] := True;
	end;
	EndUpdate();
end
714
Dark mode

with Tree1 do
begin
	BeginUpdate();
	back := 65536;
	fore := 16777215;
	VisualAppearance.Add(1,'gBFLBCJwBAEHhEJAAEhABXUIQAAYAQGKIcBiAKBQAGYBIJDEMgzDDAUBjKKocQTC4AIQjCK4JDKHYJRpHEZyCA8EhqGASRAFUQBYiWE4oSpLABQaK0ZwIGyRIrkGQgQg' + 
	'mPYDSDNU4zVIEEglBI0TDNczhNDENgtGYaJqHIYpZBcM40TKkEZoSIITZcRrOEBiRL1S0RBhGcRUHZlWzdN64LhuK47UrWdD/XhdVzXRbjfz1Oq+bxve48Br7A5yYThd' + 
	'r4LhOFQ3RjIL4xbIcUwGe6VZhjOLZXjmO49T69HTtOCYBEBA');
	VisualAppearance.Add(2,'gBFLBCJwBAEHhEJAAEhABPMIQAAYAQGKIcBiAKBQAGaAoDDcMgwQwAAxjIKUEwsACEIrjKCYVgOHYYQjGMZwHCMIhiGwcAChEZYHgkMYmDAMUhSE78axHG6PY7kKZ4bi' + 
	'aKIqQLLEhSfJ0YyBECBZpfebIbjmIZMSLEIxDKItJSpCIaRgqWS6ahGO4JUbUFLQHT9IR4daIYRgEEBA');
	VisualAppearance.Add(3,'gBFLBCJwBAEHhEJAAEhABUUIQAAYAQGKIcBiAKBQAGaAoDDcMgwQwAAxjIKUEwsACEIrjKCYVgOHYYQjGMZwGAsEwjAoYAChEaILgkMw2DBIQwgJIMEr/G6RZxjeL5Cj' + 
	'mG4nDhKMpybAcXxjBIYZJgOQpXb+PobTrNNLzfRFAxVAaWJikcZ4HpIAJNVLFdQ0XYMNSBISsBqrKiKcpeIIDWBZMbRZT1ZABCIZBpEW6LahENQwXrCN74DYkNTdKaxb' + 
	'buaaXLhGCYBgIA==');
	HeaderAppearance := EXTREELib_TLB.Bump;
	BackColor := back;
	BackColorHeader := back;
	BackColorLevelHeader := back;
	BackColorSortBar := back;
	BackColorSortBarCaption := back;
	FilterBarBackColor := back;
	FilterBarForeColor := fore;
	ForeColor := fore;
	ForeColorHeader := fore;
	ForeColorSortBar := fore;
	SelBackColor := fore;
	SelForeColor := back;
	Background[EXTREELib_TLB.exHeaderFilterBarButton] := $1000000;
	Background[EXTREELib_TLB.BackgroundPartEnum($10 Or Integer(EXTREELib_TLB.exCellButtonUp))] := $2000000;
	Background[EXTREELib_TLB.exCursorHoverColumn] := $ffffffff;
	Background[EXTREELib_TLB.exToolTipAppearance] := $3000000;
	Background[EXTREELib_TLB.exToolTipBackColor] := back;
	Background[EXTREELib_TLB.exToolTipForeColor] := fore;
	Background[EXTREELib_TLB.exSelBackColorFilter] := fore;
	Background[EXTREELib_TLB.exSelForeColorFilter] := back;
	Background[EXTREELib_TLB.exBackColorFilter] := back;
	Background[EXTREELib_TLB.exForeColorFilter] := fore;
	Background[EXTREELib_TLB.exSortBarLinkColor] := back;
	Background[EXTREELib_TLB.BackgroundPartEnum($80 Or Integer(EXTREELib_TLB.exDateSelect))] := $2000000;
	Background[EXTREELib_TLB.BackgroundPartEnum($80 Or Integer(EXTREELib_TLB.exDateSeparatorBar))] := $2000000;
	Background[EXTREELib_TLB.exTreeLinesColor] := fore;
	Description[EXTREELib_TLB.exFilterBarExclude] := '<bgcolor 0><fgcolor ffffff> Exclude </fgcolor></bgcolor>';
	EndUpdate();
end
713
How can I specify the cell's outline, border or lines around, when the cell gets selected

with Tree1 do
begin
	BeginUpdate();
	AttachTemplate('handle AddColumn(Column){Column{Def(48)=4;Def(49)=4;}}');
	with VisualAppearance do
	begin
		Add(1,'gBFLBCJwBAEHhEJAAEhABPEGACAADACAxRDgMQBQKAAzQFAYbBuGCGAAGIYBTgmFgAQhFcZQSpEEg7BKMYwjOJgFgmEQxDANIBQSKoaQiGQYYLhEZAEiONoaDJCM4wHI' + 
	'MQxHCKTZRkGcfaRCGSfIzpGKpVgOTYiTbPcIyQKtBxDIydJTmeQQQhsFIJU7SdVUPDUJZlWbLAwWTAYazXCKRZBpeJqdo6Y5RUDKUqSdLUYyvEq7ZqnOIpw5vICpaCqO' + 
	'p6HqKFpiXSAFL1fLmAwvPKrJjoeqpWpyCaRZQAGg4dbEdTNNCIbatQANKrCSpgZ7sMB6Di2L4TPS2awoWgRYyTFZMbBAeQ7LC1c45Fqrd4zS4dSxKCahcLxFiaNpYZYn' + 
	'jUap1jGPJlkuAgAkidB3nceZsCQEQJCgGhMGcQ4pkiSxEAAOYpiQIhvkYNA2gSCg5n+LIoGILowFyXQoAYAoAmASAWAaAZgggJgKF2T54DYDoDmECBGBKBJgGgTgWgWY' + 
	'RoFYGIGmGOBqByB5hCgegggiYJYgoJIICIaIeByChixULILGGGAWDCCgjCiTgrg0YxojoC4OmOSJ2D6D5kAgJLFgABAEICA=');
		Add(2,'CP:1 -4 0 0 0');
	end;
	SelBackColor := $2000000;
	SelForeColor := RGB(0,0,1);
	FullRowSelect := False;
	ShowFocusRect := False;
	DefaultItemHeight := 24;
	HeaderHeight := 24;
	DrawGridLines := EXTREELib_TLB.exVLines;
	Columns.Add('C1');
	Columns.Add('C2');
	with Items do
	begin
		CellCaption[OleVariant(AddItem('Cell 1')),OleVariant(1)] := 'Cell 2';
		CellCaption[OleVariant(AddItem('Cell 3')),OleVariant(1)] := 'Cell 4';
	end;
	Items.SelectPos := OleVariant(1);
	SelectColumnIndex := 1;
	EndUpdate();
end
712
How can I specify the cell's outline, border or lines around, when the item gets selected

with Tree1 do
begin
	BeginUpdate();
	AttachTemplate('handle AddColumn(Column){Column{Def(48)=4;Def(49)=4;}}');
	VisualAppearance.Add(1,'gBFLBCJwBAEHhEJAAEhABPEGACAADACAxRDgMQBQKAAzQFAYbBuGCGAAGIYBTgmFgAQhFcZQSpEEg7BKMYwjOJgFgmEQxDANIBQSKoaQiGQYYLhEZAEiONoaDJCM4wHI' + 
	'MQxHCKTZRkGcfaRCGSfIzpGKpVgOTYiTbPcIyQKtBxDIydJTmeQQQhsFIJU7SdVUPDUJZlWbLAwWTAYazXCKRZBpeJqdo6Y5RUDKUqSdLUYyvEq7ZqnOIpw5vICpaCqO' + 
	'p6HqKFpiXSAFL1fLmAwvPKrJjoeqpWpyCaRZQAGg4dbEdTNNCIbatQANKrCSpgZ7sMB6Di2L4TPS2awoWgRYyTFZMbBAeQ7LC1c45Fqrd4zS4dSxKCahcLxFiaNpYZYn' + 
	'jUap1jGPJlkuAgAkidB3nceZsCQEQJCgGhMGcQ4pkiSxEAAOYpiQIhvkYNA2gSCg5n+LIoGILowFyXQoAYAoAmASAWAaAZgggJgKF2T54DYDoDmECBGBKBJgGgTgWgWY' + 
	'RoFYGIGmGOBqByB5hCgegggiYJYgoJIICIaIeByChixULILGGGAWDCCgjCiTgrg0YxojoC4OmOSJ2D6D5kAgJLFgABAEICA=');
	SelBackColor := $1000000;
	SelForeColor := RGB(0,0,1);
	ShowFocusRect := False;
	DefaultItemHeight := 24;
	HeaderHeight := 24;
	DrawGridLines := EXTREELib_TLB.exVLines;
	Columns.Add('C1');
	Columns.Add('C2');
	with Items do
	begin
		CellCaption[OleVariant(AddItem('Cell 1')),OleVariant(1)] := 'Cell 2';
		CellCaption[OleVariant(AddItem('Cell 3')),OleVariant(1)] := 'Cell 4';
		SelectPos := OleVariant(1);
	end;
	EndUpdate();
end
711
How can I specify the cell's outline, border or lines around

with Tree1 do
begin
	BeginUpdate();
	AttachTemplate('handle AddColumn(Column){Column{Def(48)=4;Def(49)=4;}}');
	VisualAppearance.Add(1,'gBFLBCJwBAEHhEJAAEhABPEGACAADACAxRDgMQBQKAAzQFAYbBuGCGAAGIYBTgmFgAQhFcZQSpEEg7BKMYwjOJgFgmEQxDANIBQSKoaQiGQYYLhEZAEiONoaDJCM4wHI' + 
	'MQxHCKTZRkGcfaRCGSfIzpGKpVgOTYiTbPcIyQKtBxDIydJTmeQQQhsFIJU7SdVUPDUJZlWbLAwWTAYazXCKRZBpeJqdo6Y5RUDKUqSdLUYyvEq7ZqnOIpw5vICpaCqO' + 
	'p6HqKFpiXSAFL1fLmAwvPKrJjoeqpWpyCaRZQAGg4dbEdTNNCIbatQANKrCSpgZ7sMB6Di2L4TPS2awoWgRYyTFZMbBAeQ7LC1c45Fqrd4zS4dSxKCahcLxFiaNpYZYn' + 
	'jUap1jGPJlkuAgAkidB3nceZsCQEQJCgGhMGcQ4pkiSxEAAOYpiQIhvkYNA2gSCg5n+LIoGILowFyXQoAYAoAmASAWAaAZgggJgKF2T54DYDoDmECBGBKBJgGgTgWgWY' + 
	'RoFYGIGmGOBqByB5hCgegggiYJYgoJIICIaIeByChixULILGGGAWDCCgjCiTgrg0YxojoC4OmOSJ2D6D5kAgJLFgABAEICA=');
	SelBackMode := EXTREELib_TLB.exTransparent;
	ShowFocusRect := False;
	DefaultItemHeight := 24;
	HeaderHeight := 24;
	DrawGridLines := EXTREELib_TLB.exVLines;
	Columns.Add('C1');
	Columns.Add('C2');
	with Items do
	begin
		CellCaption[OleVariant(AddItem('Cell 1')),OleVariant(1)] := 'Cell 2';
		h := AddItem('Cell 2');
		CellCaption[OleVariant(h),OleVariant(1)] := 'Cell 3';
		CellBackColor[OleVariant(h),OleVariant(1)] := $1000000;
	end;
	EndUpdate();
end
710
Is it possible to highligth the match while a filter is applied

// AddColumn event - Fired after a new column has been added.
procedure TForm1.Tree1AddColumn(ASender: TObject; Column : IColumn);
begin
	// Column.Def(17) = 1
end;

// FilterChange event - Notifies your application that the filter is changed.
procedure TForm1.Tree1FilterChange(ASender: TObject; );
begin
	with Tree1 do
	begin
		format := FormatABC('`value replace ''` + value + `'' with ''<bgcolor 000000><fgcolor FFFFFF>` + value  + `</fgcolor></bgcolor>''`',OleVariant(FilterBarPromptPattern),Null,Null);
		Columns.Item[OleVariant(0)].FormatColumn := format;
		Columns.Item[OleVariant(1)].FormatColumn := format;
	end
end;

with Tree1 do
begin
	BeginUpdate();
	DrawGridLines := EXTREELib_TLB.exVLines;
	HeaderAppearance := EXTREELib_TLB.Etched;
	Columns.Add('Col 1');
	Columns.Add('Col 2');
	with Items do
	begin
		CellCaption[OleVariant(AddItem('219 Smith')),OleVariant(1)] := 'Ignacio 1234';
		CellCaption[OleVariant(AddItem('1666 County Road 309A')),OleVariant(1)] := '897 Manassa';
		CellCaption[OleVariant(AddItem('38 Lone Pine')),OleVariant(1)] := 'Durango 11';
		CellCaption[OleVariant(AddItem('612 Jachim Street')),OleVariant(1)] := 'Lamar 222';
	end;
	FilterBarPromptPattern := '1';
	FilterBarPromptVisible := Integer(EXTREELib_TLB.exFilterBarCompact) Or Integer(EXTREELib_TLB.exFilterBarSingleLine) Or Integer(EXTREELib_TLB.exFilterBarVisible) Or Integer(EXTREELib_TLB.exFilterBarPromptVisible);
	FilterBarPromptType := Integer(EXTREELib_TLB.exFilterPromptCaseSensitive) Or Integer(EXTREELib_TLB.exFilterPromptContainsAll);
	EndUpdate();
end
709
Is it possible to highlight the column's header once a filter is applied (sample 2)

with Tree1 do
begin
	BeginUpdate();
	with VisualAppearance do
	begin
		Add(1,'gBFLBCJwBAEHhEJAAEhABO8GACAADACAxRDgMQBQKAAzQFAYbBuGCGAAGIYBTgmFgAQhFcZQSKUOQTDKNYykCIRSDUJYkSZEIyjBI8ExXFqNACkGKwQgmNYDSBMcbwSA' + 
	'sXRYFocJ5gOT6AjKBA2UclEZpajiTY3ABUEgUS5oOBIACqariaQJAAiCRQGiYZyHKaRSwPBKFYDIIjbJheTIDChNVxUcDENQjJqLBIDRzbarye59YBfeBXdgmA4LQbDM' + 
	'RwNgMMQTDqKYbkOQZHbeGKAWTMEZzJj8cxTEqIaBhGTLfojSZMS7UGK1LLtMyHI6kP7sOiLfi2W4/W7XV72F79TzXIa2ZBuO57bhnAZ/VzGNj4PRNezfRqicjsGxcZwX' + 
	'g+TpQj0ew6gSOw7wSbozjsfYXi8PwMnSc52leHotl+MxjmoXh2nybxOH+SQtnYXx+D2P4vGMB56hQf5PCgBYeDwYBCEo1xggebgKH6IIDBYBgkiAQ5FgYPAhEIRgWGqD' + 
	'BoC4GoCiGCBYhGBQPAWdIQp0eIUiWCZigiJgqgqYpIioJQhmIMhBH0NxjEMag2g2Y4ImYOoOmOSJeDQNxXlOLR3ECUAQICA=');
		Add(2,'gBFLBCJwBAEHhEJAAEhABgsHQAAYAQGKIcBiAKBQAGaAoDDYNwwQwAAxDAKcEwsACEIrjKCRShyCYZRrGUgRCKQahLEiTIhGUYJHgmK4tRoAUgxWCEExrAaQJjjeCQFi' + 
	'6LAtDhPMByfQEZQIGyjkgjNLUcSbG4AKgkCiXfpUAJVP7FcgSABEEigNIxToOU4jFgeCYLQKQRK2RC9GQGFCbLhpYKIahGTYWVheN5XXblez9P7ABQwKCcAwXBp7YIKA' + 
	'T4XBIdYdQ7IL4xGA0AJPFoJC7mOQ5XiYAIBAZ/RL0LCcbxHHafVboQj6JouD5PUDVNY1XBdPynI6CbLhWy6Dq4UZzPwzeBifSHfDjRoJcCZe71KY3GwSEboNA6Kp+QBH' + 
	'AmZoZjSPYIEiF47lOLJVnuYofBwJJHmaQoYj0MIRHeM4/m6cJ8B+fpBHQJ5SGKPYYH8OYMk+P5Bn4fxaAYZAvEIX4RgUWBGgCCAmAqApgkgNgOgMEYlGASoEkQeBWBaB' + 
	'ZhggZgagaYRoEwShWA6NZZAMQBAICA==');
	end;
	Background[EXTREELib_TLB.exHeaderFilterBarButton] := $1000000;
	Background[EXTREELib_TLB.exHeaderFilterBarActive] := $2000000;
	Background[EXTREELib_TLB.exCursorHoverColumn] := $ffffffff;
	HeaderHeight := 28;
	BackColorHeader := RGB(255,255,255);
	DrawGridLines := EXTREELib_TLB.exRowLines;
	HeaderVisible := True;
	with Columns do
	begin
		(IUnknown(Add('C1')) as EXTREELib_TLB.Column).DisplayFilterButton := True;
		with (IUnknown(Add('C2')) as EXTREELib_TLB.Column) do
		begin
			DisplayFilterButton := True;
			Filter := 'Item 2';
			FilterType := EXTREELib_TLB.exFilter;
		end;
		(IUnknown(Add('C3')) as EXTREELib_TLB.Column).DisplayFilterButton := True;
	end;
	with Items do
	begin
		h := AddItem('Item 1');
		CellCaption[OleVariant(h),OleVariant(1)] := 'Item 2';
		CellCaption[OleVariant(h),OleVariant(2)] := 'Item 3';
		h := AddItem('Item 4');
		CellCaption[OleVariant(h),OleVariant(1)] := 'Item 5';
		CellCaption[OleVariant(h),OleVariant(2)] := 'Item 6';
	end;
	ApplyFilter();
	EndUpdate();
end
708
How can I make the expand/collapse glyphs DPI aware

with Tree1 do
begin
	size := 2;
	BeginUpdate();
	with VisualAppearance do
	begin
		Add(3,'gBFLBCJwBAEHhEJAAEhEGAUHQAAYAQGKIcBiAKBQAGaAoDDYOA4QwAAxDAKcEwsACEIrjKCRShyCYZRhGcTSBCIZBqEqSZLiEZRQiiCYsS5GQBRfIUEghGyNZjgNzQcC' + 
	'QAI8T5IUgARBJIDSMY6DpOIxYHgmC4DEITNLxOK0EhRHCBZrgOCAYhqEY1Ro+dhPFYjVTMdK0LRtKy7Mq2aJmOpZDxWE7dZKpO5fbxXS67cr2fp/YBed4rfa7KTlOBKc' + 
	'RQRBEFQPDqPZBkORZHh2FoLRJKbgtHJmHYNQWhVyYBbNCyTI6lahpeuHBx1QaWWxjbCMEr6bpoWLbFi3Ha1UzrPa8b5vSw7Gr+HzYQTHGPXGqaYJdZrnea6B7+U5XUJr' + 
	'nSOZciYHwhAeR5HDK+JVGqKRRmScx5HyfRei+H5bmmcp4Fi8o/CGGJKGQKZUGoFQigUPIiCeSZXnyHB6l0SAJn8JxfkIeZ5CgXxjCCAhyB8QgIlAM4MlKAIcCaIBIGYG' + 
	'oGGEYhqBMMxgnICgRDUDQjESGwmAkWBuCqBoiHIVgkDQYgYESWg2E0YhohcJQigITg3CQSRyEyEYGGOWJwhQJD4FiFIMk0aJFGsIBkkOBJeDc+AchYJwJgIWhSgYZQpF' + 
	'IVoVGOGQ4l2EwIBWMhgDmDhThCEwkAiaJchKDhjhgZhsCUY4iFCEoZkiaYQmSGAWhWQhgDuDpTjCDQiEgchAg0IpJBoDoFiEKBqCaCAimgIguH8IZnkPUhcBcJg+hGJZ' + 
	'nloYJsiaKZKGa24YnWSR0CkKhCA2CxlCqColhAYpqEKER0DqVZ0A0ASAgA==');
		Add(4,'gBFLBCJwBAEHhEJAAEhABAQCg6AADACAxRDgMQBQKAAzQFAYbBwHCGAAGIYBTgmFgAQhFcZQSKUOQTDKNYykCIRSDUJYkSZEIyjBI8ExXFqNACjeQYJBCNYbTJAbqhYI' + 
	'gAR3HqQZABCCSQKkYx0HScRiwPBMFwGIQmaaicZoJCiN4DTZAcIBRDUIxpDR9bBeKw3KqVaZnWhaNpWXZlTzKdSxXisF67RZSdi/XgvF5XXblez9P69LwXe5mUrGbyVY' + 
	'ghCCIKgeG4dR7IMhyLDcKQXCCVW7aGSsOwbAqAXpdGAXTQdDyLJKnaZqOi6BjjA4rNbHGIYJb1XTRMa1LJuG5LJrOeZ3Xre4BLfh1VoFRpjWIYNY1QS7TLOczzfRdDxT' + 
	'iGVpkjCeJoD4Ng1hSRxiisVRKg8D4PkWZJznmPQ+F8Xx5guWpjHGWYMiYQodEaIRSCgU5KCSeh3naHB/iAAh9n8fwfgIeZ1CgXwjCCAhxl8AgIlAM4MlKAIcCaD54FYF' + 
	'oFmGCBmBaBIJigPJNgKSAoDSVC+BIbIYCUYYoiYKoJgkWIMlGCAglMaJZDWCYiFyFIJkkOJYhEJc7G4PYPCOaJshQJBjgiVIUgyDRokEaggGSQ4El4N1CBiFgnAmAhaF' + 
	'KFZlFkShUhWJRYmITg3GSQgFGuGBOGOFJkCSSQCDoNgkiOCY0hUJJmmmQhvhqZtYmUOQmBWIRvhgTpjjSbAjEiEgchBZgyEaBIhigWgegqIhIjoDILiACB5nTL5WnWRY' + 
	'OiSKYJnqGQ7CmOh2hqJ5OkYORxFyShKhSAxihkOomioY5YiqFIkFyTo1HkAxAEAgIA==');
		Add(1,Tree1.FormatABC('`CP:3 -` + int(value*dpi) + ` -` + int(value*dpi) + ` ` +  int(value*dpi) + ` ` + int(value*dpi)',OleVariant(size),Null,Null));
		Add(2,Tree1.FormatABC('`CP:4 -` + int(value*dpi) + ` -` + int(value*dpi) + ` ` +  int(value*dpi) + ` ` + int(value*dpi)',OleVariant(size),Null,Null));
	end;
	LinesAtRoot := EXTREELib_TLB.exGroupLinesAtRoot;
	HasButtons := EXTREELib_TLB.exCustom;
	HasButtonsCustom[False] := 16777216;
	HasButtonsCustom[True] := 33554432;
	Columns.Add('Column');
	with Items do
	begin
		h := AddItem('Root 1');
		InsertItem(h,Null,'Child 1');
		InsertItem(h,Null,'Child 2');
		ExpandItem[h] := True;
		h := AddItem('Root 2');
		InsertItem(h,Null,'Child');
	end;
	EndUpdate();
end
707
Is it possible to highlight the column's header once a filter is applied (sample 1)

with Tree1 do
begin
	BeginUpdate();
	with VisualAppearance do
	begin
		Add(2,'gBFLBCJwBAEHhEJAAEhABX8GACAADACAxSDEMQBQKAAzQFAYbhgHCGAAGQaBUgmFgAQhFcZQSKUOQTDKNYykCIRSDUJYkSZEIyjBI8ExXFqNACkGKwYgmNYiTLAcgANJ' + 
	'0WBaGIZJ4gOT5fDKMoEDRRYADFCscwxJybQAqGQKKb+VgAVY/cTyBIAEQSKA0TDOQ5TSKWB4JPZQRBEbZMNBtBIUJquKaqShdQJCU5FdY3Xblez9P7AMBwLFEC4NQ8YN' + 
	'YuPhjR4dRTIMhvVAsUArFh8Zg9GZZFjmDIDT4ydBLTQwcyVIKnP5qOa6XbmPoCQDYKxZHYxPzVDa3axuL76dqCAT7XrXNy1TbNRrzQKfcJqfCbdw2YaDZLOOT3fjuI4h' + 
	'hKaRzFAHJ+jYQ4xHuY4gHuGIXGeExqC8Tp6C+PoEm+G5ImycRgh0XwvDGa5rgOeoejyXwnFeQp2mkf5ClgBB9gCWIYAwfYAEKV58mkdwOggNArgOXY2EWLoDkKOA0mgb' + 
	'hOGgZApgaSBIHWSYHSmbApgYThmESZYJkIeIkgeCpfliLIHgpMIcmUYYYmODAlg2SI4mWfRfGOEguDcCRjFYAJihCQhJBSDoRmONgKEcI4kFCEJhhOVYTmYnAlEAQhWB' + 
	'MJYJGYWoWmWSR2F6F5lnkWAQhUAgpEieRWEuSYkjWGpmkmNhuhuZwJkYcocmaaYkjyEhngnUA6lEFAlAEgI=');
		Add(1,'CP:2 -8 -4 2 4');
	end;
	Background[EXTREELib_TLB.exHeaderFilterBarButton] := $1fefefe;
	Background[EXTREELib_TLB.exHeaderFilterBarActive] := $1010101;
	Background[EXTREELib_TLB.exCursorHoverColumn] := $ffffffff;
	HeaderHeight := 28;
	BackColorHeader := RGB(255,255,255);
	DrawGridLines := EXTREELib_TLB.exRowLines;
	HeaderVisible := True;
	with Columns do
	begin
		(IUnknown(Add('C1')) as EXTREELib_TLB.Column).DisplayFilterButton := True;
		with (IUnknown(Add('C2')) as EXTREELib_TLB.Column) do
		begin
			DisplayFilterButton := True;
			Filter := 'Item 2';
			FilterType := EXTREELib_TLB.exFilter;
		end;
		(IUnknown(Add('C3')) as EXTREELib_TLB.Column).DisplayFilterButton := True;
	end;
	with Items do
	begin
		h := AddItem('Item 1');
		CellCaption[OleVariant(h),OleVariant(1)] := 'Item 2';
		CellCaption[OleVariant(h),OleVariant(2)] := 'Item 3';
		h := AddItem('Item 4');
		CellCaption[OleVariant(h),OleVariant(1)] := 'Item 5';
		CellCaption[OleVariant(h),OleVariant(2)] := 'Item 6';
	end;
	ApplyFilter();
	EndUpdate();
end
706
Is it possible to show the filterbar on top of the rows

with Tree1 do
begin
	BeginUpdate();
	FilterBarPromptVisible := EXTREELib_TLB.exFilterBarTop;
	HeaderHeight := 24;
	FilterBarHeight := HeaderHeight;
	HeaderAppearance := EXTREELib_TLB.Flat;
	DrawGridLines := EXTREELib_TLB.exAllLines;
	GridLineStyle := EXTREELib_TLB.exGridLinesGeometric;
	with (IUnknown(Columns.Add('Column')) as EXTREELib_TLB.Column) do
	begin
		DisplayFilterButton := True;
		FilterType := EXTREELib_TLB.exPattern;
		Filter := 'B*';
	end;
	with (IUnknown(Columns.Add('Index')) as EXTREELib_TLB.Column) do
	begin
		FormatColumn := '1 index ``';
		Position := 0;
		Width := 48;
		AllowSizing := False;
		SortType := EXTREELib_TLB.SortNumeric;
		Def[EXTREELib_TLB.exCellHasCheckBox] := OleVariant(True);
	end;
	with Items do
	begin
		AddItem('A.1');
		AddItem('A.2');
		AddItem('B.1');
		AddItem('B.2');
		AddItem('B.3');
		AddItem('C');
	end;
	ApplyFilter();
	EndUpdate();
end
705
DragDrop (with visual effect)

// OLEDragDrop event - Occurs when a source component is dropped onto a target component when the source component determines that a drop can occur.
procedure TForm1.Tree1OLEDragDrop(ASender: TObject; Data : IExDataObject;var Effect : Integer;Button : Smallint;Shift : Smallint;X : Integer;Y : Integer);
begin
	// SelectItem(InsertItem(i,, Data.GetData(1))) = True
	with Tree1 do
	begin
		i := ItemFromPoint[-1,-1,c,hit];
		with Items do
		begin
			ExpandItem[i] := True;
		end;
	end
end;

// OLEStartDrag event - Occurs when the OLEDrag method is called.
procedure TForm1.Tree1OLEStartDrag(ASender: TObject; Data : IExDataObject;var AllowedEffects : Integer);
begin
	// Data.SetData(Me.Items.CellCaption(FocusItem, 0), 1)
	with Tree1 do
	begin
		AllowedEffects := 1;
	end
end;

with Tree1 do
begin
	VisualAppearance.Add(1,'gBFLBCJwBAEHhEJAAEhABPUIQAAYAQGKIcBiAKBQAGaAoDgYN4MAANAwjJBMKgBBCLIxhEYobgmGIaRjEEQDCKYcxHCaIBiGcaIfDEBIeSBHcgRbAcOQHGSZZBhGRJGj' + 
	'uKIbSrLICzBDUcRnGwAKQoaaaEomHwyAZOYwDAIoWhpKKCKjqWJKNb+XgAAJTES0RRVRTNAZ1YghGAQgIA==');
	Background[EXTREELib_TLB.exListOLEDropPosition] := $1000000;
	Background[EXTREELib_TLB.exDragDropBefore] := $0;
	Background[EXTREELib_TLB.exDragDropAfter] := $ffffff;
	OLEDropMode := EXTREELib_TLB.exOLEDropManual;
	AutoDrag := EXTREELib_TLB.exAutoDragPositionAnyOnRight;
	LinesAtRoot := EXTREELib_TLB.exLinesAtRoot;
	Indent := 16;
	SelBackMode := EXTREELib_TLB.exTransparent;
	Columns.Add('Default');
	with Items do
	begin
		h := AddItem('Root');
		InsertItem(h,Null,'Child 1');
		InsertItem(h,Null,'Child 2');
		ExpandItem[h] := True;
	end;
	OutputDebugString( 'You can:' );
	OutputDebugString( 'A) left-click to drag and drop items between controls (open a new exhelper and run the same sample)' );
	OutputDebugString( 'B) right-click to re-arrange the item position inside the same control' );
	OutputDebugString( 'This sample shows how you can insert the data being dropped as a child of the item being hovered.' );
end
704
DragDrop (with no visual effect, hide item while drag and drop)

// OLEDragDrop event - Occurs when a source component is dropped onto a target component when the source component determines that a drop can occur.
procedure TForm1.Tree1OLEDragDrop(ASender: TObject; Data : IExDataObject;var Effect : Integer;Button : Smallint;Shift : Smallint;X : Integer;Y : Integer);
begin
	// SelectItem(InsertItem(i,, Data.GetData(1))) = True
	with Tree1 do
	begin
		i := ItemFromPoint[-1,-1,c,hit];
		with Items do
		begin
			ExpandItem[i] := True;
		end;
	end
end;

// OLEStartDrag event - Occurs when the OLEDrag method is called.
procedure TForm1.Tree1OLEStartDrag(ASender: TObject; Data : IExDataObject;var AllowedEffects : Integer);
begin
	// Data.SetData(Me.Items.CellCaption(FocusItem, 0), 1)
	with Tree1 do
	begin
		AllowedEffects := 1;
	end
end;

with Tree1 do
begin
	Background[EXTREELib_TLB.exDragDropBefore] := $0;
	Background[EXTREELib_TLB.exDragDropAfter] := $ffffff;
	OLEDropMode := EXTREELib_TLB.exOLEDropManual;
	AutoDrag := EXTREELib_TLB.exAutoDragPositionAnyOnRight;
	LinesAtRoot := EXTREELib_TLB.exLinesAtRoot;
	Indent := 16;
	SelBackMode := EXTREELib_TLB.exTransparent;
	Columns.Add('Default');
	with Items do
	begin
		h := AddItem('Root');
		InsertItem(h,Null,'Child 1');
		InsertItem(h,Null,'Child 2');
		ExpandItem[h] := True;
	end;
	OutputDebugString( 'You can:' );
	OutputDebugString( 'A) left-click to drag and drop items between controls (open a new exhelper and run the same sample)' );
	OutputDebugString( 'B) right-click to re-arrange the item position inside the same control' );
	OutputDebugString( 'This sample shows how you can insert the data being dropped as a child of the item being hovered.' );
end
703
DragDrop

// OLEDragDrop event - Occurs when a source component is dropped onto a target component when the source component determines that a drop can occur.
procedure TForm1.Tree1OLEDragDrop(ASender: TObject; Data : IExDataObject;var Effect : Integer;Button : Smallint;Shift : Smallint;X : Integer;Y : Integer);
begin
	// SelectItem(InsertItem(i,, Data.GetData(1))) = True
	with Tree1 do
	begin
		i := ItemFromPoint[-1,-1,c,hit];
		with Items do
		begin
			ExpandItem[i] := True;
		end;
	end
end;

// OLEStartDrag event - Occurs when the OLEDrag method is called.
procedure TForm1.Tree1OLEStartDrag(ASender: TObject; Data : IExDataObject;var AllowedEffects : Integer);
begin
	// Data.SetData(Me.Items.CellCaption(FocusItem, 0), 1)
	with Tree1 do
	begin
		AllowedEffects := 1;
	end
end;

with Tree1 do
begin
	OLEDropMode := EXTREELib_TLB.exOLEDropManual;
	AutoDrag := EXTREELib_TLB.exAutoDragPositionAnyOnRight;
	LinesAtRoot := EXTREELib_TLB.exLinesAtRoot;
	Indent := 16;
	SelBackMode := EXTREELib_TLB.exTransparent;
	Columns.Add('Default');
	with Items do
	begin
		h := AddItem('Root');
		InsertItem(h,Null,'Child 1');
		InsertItem(h,Null,'Child 2');
		ExpandItem[h] := True;
	end;
	OutputDebugString( 'You can:' );
	OutputDebugString( 'A) left-click to drag and drop items between controls (open a new exhelper and run the same sample)' );
	OutputDebugString( 'B) right-click to re-arrange the item position inside the same control' );
	OutputDebugString( 'This sample shows how you can insert the data being dropped as a child of the item being hovered.' );
end
702
Is there anyway to stop the header changing colour when the mouse hovers/moves across the column header (non-clickable)

with Tree1 do
begin
	BeginUpdate();
	HeaderAppearance := EXTREELib_TLB.Etched;
	with Columns do
	begin
		Add('Item');
		with (IUnknown(Add('Pos')) as EXTREELib_TLB.Column) do
		begin
			Position := 0;
			Width := 32;
			AllowSizing := False;
			FormatColumn := '1 index ``';
			AllowSort := False;
			AllowDragging := False;
		end;
	end;
	with Items do
	begin
		AddItem('Item A');
		AddItem('Item B');
		AddItem('Item C');
	end;
	EndUpdate();
end
701
Is there anyway to stop the header changing colour when the mouse hovers/moves across the column header

with Tree1 do
begin
	BeginUpdate();
	HeaderAppearance := EXTREELib_TLB.Etched;
	Background[EXTREELib_TLB.exCursorHoverColumn] := $ffffffff;
	with Columns do
	begin
		Add('Item');
		with (IUnknown(Add('Pos')) as EXTREELib_TLB.Column) do
		begin
			Position := 0;
			Width := 32;
			AllowSizing := False;
			FormatColumn := '1 index ``';
			AllowSort := False;
			AllowDragging := False;
		end;
	end;
	with Items do
	begin
		AddItem('Item A');
		AddItem('Item B');
		AddItem('Item C');
	end;
	EndUpdate();
end
700
Is it possible to display the header using multiple lines(sample 1)

// AddColumn event - Fired after a new column has been added.
procedure TForm1.Tree1AddColumn(ASender: TObject; Column : IColumn);
begin
	// Column.Def(52) = 4
	// Column.Def(53) = 4
end;

with Tree1 do
begin
	BeginUpdate();
	HeaderHeight := 36;
	HeaderAppearance := EXTREELib_TLB.Flat;
	HeaderSingleLine := False;
	with Columns do
	begin
		Add('Column');
		(IUnknown(Add('This is a bit of text that should break the header')) as EXTREELib_TLB.Column).Width := 128;
		(IUnknown(Add('This is a bit of text that should break the header')) as EXTREELib_TLB.Column).Width := 96;
	end;
	EndUpdate();
end
699
Is it possible to display the header using multiple lines(sample 2)

// AddColumn event - Fired after a new column has been added.
procedure TForm1.Tree1AddColumn(ASender: TObject; Column : IColumn);
begin
	// Column.Def(52) = 4
	// Column.Def(53) = 4
end;

with Tree1 do
begin
	BeginUpdate();
	HeaderHeight := 36;
	HeaderAppearance := EXTREELib_TLB.Flat;
	with Columns do
	begin
		Add('Column');
		(IUnknown(Add('C1')) as EXTREELib_TLB.Column).HTMLCaption := '<b>C<off 4>1</b><br>left';
		(IUnknown(Add('C2')) as EXTREELib_TLB.Column).HTMLCaption := '<c><b>C<off 4>2</b><br><c>center';
		(IUnknown(Add('C3')) as EXTREELib_TLB.Column).HTMLCaption := '<r><b>C<off 4>3</b><br><r>right';
	end;
	EndUpdate();
end
698
Is it possible to exclude the parent/child items when do the filtering, so to include only items that match the filter without any indentation

// FilterChange event - Notifies your application that the filter is changed.
procedure TForm1.Tree1FilterChange(ASender: TObject; );
begin
	with Tree1 do
	begin
		Indent := Tree1.FormatABC('value > 0 ? 18 : 0',Items.MatchItemCount,Null,Null);
	end
end;

with Tree1 do
begin
	BeginUpdate();
	LinesAtRoot := EXTREELib_TLB.exLinesAtRoot;
	Indent := 18;
	FilterInclude := EXTREELib_TLB.exMatchingItemsOnly;
	DrawGridLines := EXTREELib_TLB.exVLines;
	HeaderAppearance := EXTREELib_TLB.Flat;
	with Columns do
	begin
		with (IUnknown(Add('Column')) as EXTREELib_TLB.Column) do
		begin
			DisplayFilterButton := True;
			FilterType := EXTREELib_TLB.exFilter;
			FilterList := EXTREELib_TLB.exShowCheckBox;
			Filter := 'C1';
		end;
		with (IUnknown(Add('Pos')) as EXTREELib_TLB.Column) do
		begin
			FormatColumn := '1 rindex ``';
			Position := 0;
			AllowSizing := False;
			AllowDragging := False;
		end;
	end;
	with Items do
	begin
		h := AddItem('R1');
		h2 := InsertItem(h,Null,'S');
		InsertItem(h2,Null,'C1');
		InsertItem(h2,Null,'C2');
		InsertItem(h,Null,'C1');
		InsertItem(h,Null,'C2');
		ExpandItem[h] := True;
		h := AddItem('R2');
		InsertItem(h,Null,'C1');
		InsertItem(h,Null,'C2');
	end;
	ApplyFilter();
	EndUpdate();
end
697
I would like to display a solid line between "root" items, and dotted lines (default) between child items. How can I do that

with Tree1 do
begin
	BeginUpdate();
	LinesAtRoot := EXTREELib_TLB.exLinesAtRoot;
	DrawGridLines := EXTREELib_TLB.exHLines;
	GridLineStyle := EXTREELib_TLB.exGridLinesGeometric;
	VisualAppearance.Add(1,'gBFLBCJwBAEHhEJAAEhABMsIQAAYAQGKIcBiAKBQAGaAoDgYN4MAANAwjJBMKgBBCLIxhEYobgmGIXRpFMbxAKQahLEiTIgGUYJHgmK4tQLHb7zGAABRDDSOIDnGQJXh' + 
	'aI4JQSMMQDGLAZxVFiPRhAWLpBh+PQATrOdLUfSjVwhBKAQEBA==');
	with (IUnknown(Columns.Add('Default')) as EXTREELib_TLB.Column) do
	begin
		Def[EXTREELib_TLB.exCellHasCheckBox] := OleVariant(True);
		PartialCheck := True;
	end;
	with (IUnknown(Columns.Add('Position')) as EXTREELib_TLB.Column) do
	begin
		FormatColumn := '((1 rindex ``) contains `.`) = 0';
		Visible := False;
	end;
	with ConditionalFormats.Add('%C1',Null) do
	begin
		BackColor := $1e0e0e0;
	end;
	with Items do
	begin
		h := AddItem('Root 1');
		InsertItem(h,Null,'Child 1');
		InsertItem(h,Null,'Child 2');
		InsertItem(h,Null,'Child 3');
		ExpandItem[h] := True;
		h := AddItem('Root 2');
		InsertItem(h,Null,'Child 1');
		InsertItem(h,Null,'Child 2');
		h := AddItem('Root 3');
		InsertItem(h,Null,'Child 1');
		InsertItem(h,Null,'Child 2');
	end;
	EndUpdate();
end
696
I can not center or align the cell's caption and icon, when it displays the hierarchy

with Tree1 do
begin
	BeginUpdate();
	Images('gBJJgBAIDAAGAAEAAQhYAf8Pf4hh0QihCJo2AEZjQAjEZFEaIEaEEaAIAkcbk0olUrlktl0vmExmUzmk1m03nE5nU7nk9n0/oFBoVDolFo1HpFJpVLplNp1PqFRqVTql' + 
	'Vq1XrFZrVbrldr1fsFhsVjslls1ntFptVrtltt1vuFxuVzul1u13vF5vV7vl9v1/wGBwWDwmFw2HxGJxWLxmNx0xiFdyOTh8Tf9ZymXx+QytcyNgz8r0OblWjyWds+m0' + 
	'ka1Vf1ta1+r1mos2xrG2xeZ0+a0W0qOx3GO4NV3WeyvD2XJ5XL5nN51aiw+lfSj0gkUkAEllHanHI5j/cHg8EZf7w8vl8j4f/qfEZeB09/vjLAB30+kZQAP/P5/H6/yN' + 
	'AOAEAwCjMBwFAEDwJBMDwLBYAP2/8Hv8/gAGAD8LQs9w/nhDY/oygIA=');
	with (IUnknown(Columns.Add('Tasks')) as EXTREELib_TLB.Column) do
	begin
		Def[EXTREELib_TLB.exCellCaptionFormat] := OleVariant(1);
	end;
	HeaderVisible := True;
	with Items do
	begin
		h := AddItem('Project');
		hChild := InsertItem(h,Null,'<img>1</img> Task (left)');
		hChild := InsertItem(h,Null,'<c><img>2</img> Task (center)');
		hChild := InsertItem(h,Null,'<r>Task (right) <img>3</img>');
		ExpandItem[h] := True;
	end;
	EndUpdate();
end
695
How do I set an extra data for each item
// MouseMove event - Occurs when the user moves the mouse.
procedure TForm1.Tree1MouseMove(ASender: TObject; Button : Smallint;Shift : Smallint;X : Integer;Y : Integer);
begin
	with Tree1 do
	begin
		i := ItemFromPoint[-1,-1,c,hit];
		OutputDebugString( i );
		OutputDebugString( Items.ItemData[i] );
	end
end;

with Tree1 do
begin
	BeginUpdate();
	ColumnAutoResize := True;
	Columns.Add('Default');
	with Items do
	begin
		ItemData[AddItem('method 1')] := 'your extra data of method 1';
		InsertItem(0,'your extra data of method 2','method 2');
	end;
	with Items do
	begin
		DefaultItem := AddItem('method 3');
		ItemData[0] := 'your extra data of method 3';
	end;
	EndUpdate();
end
694
I do not like to specify the item padding for every column I add. The question is how can I do it automatically

with Tree1 do
begin
	BeginUpdate();
	AttachTemplate('handle AddColumn(Column){Column{Def(48)=8;Def(49)=8;AllowDragging=False;AllowSizing = True}}');
	HeaderAppearance := EXTREELib_TLB.Etched;
	DrawGridLines := EXTREELib_TLB.exAllLines;
	GridLineStyle := EXTREELib_TLB.exGridLinesVSolid;
	with Columns do
	begin
		Add('Item');
		with (IUnknown(Add('Pos')) as EXTREELib_TLB.Column) do
		begin
			Position := 0;
			Width := 32;
			AllowSizing := False;
			FormatColumn := '1 index ``';
		end;
	end;
	with Items do
	begin
		AddItem('Item A');
		AddItem('Item B');
		AddItem('Item C');
	end;
	EndUpdate();
end
693
Can I sort the column by check-state

with Tree1 do
begin
	BeginUpdate();
	with (IUnknown(Columns.Add('Check')) as EXTREELib_TLB.Column) do
	begin
		Def[EXTREELib_TLB.exCellHasCheckBox] := OleVariant(True);
		SortType := EXTREELib_TLB.exSortByState;
	end;
	with Items do
	begin
		AddItem(Null);
		CellState[OleVariant(AddItem(Null)),OleVariant(0)] := 1;
		CellState[OleVariant(AddItem(Null)),OleVariant(0)] := 1;
		AddItem(Null);
	end;
	Columns.Item[OleVariant(0)].SortOrder := EXTREELib_TLB.SortAscending;
	EndUpdate();
end
692
Can I sort the column by image

with Tree1 do
begin
	BeginUpdate();
	Images('gBJJgBAIDAAGAAEAAQhYAf8Pf4hh0QihCJo2AEZjQAjEZFEaIEaEEaAIAkcbk0olUrlktl0vmExmUzmk1m03nE5nU7nk9n0/oFBoVDolFo1HpFJpVLplNp1PqFRqVTql' + 
	'Vq1XrFZrVbrldr1fsFhsVjslls1ntFptVrtltt1vuFxuVzul1u13vF5vV7vl9v1/wGBwWDwmFw2HxGJxWLxmNx0xiFdyOTh8Tf9ZymXx+QytcyNgz8r0OblWjyWds+m0' + 
	'ka1Vf1ta1+r1mos2xrG2xeZ0+a0W0qOx3GO4NV3WeyvD2XJ5XL5nN51aiw+lfSj0gkUkAEllHanHI5j/cHg8EZf7w8vl8j4f/qfEZeB09/vjLAB30+kZQAP/P5/H6/yN' + 
	'AOAEAwCjMBwFAEDwJBMDwLBYAP2/8Hv8/gAGAD8LQs9w/nhDY/oygIA=');
	with (IUnknown(Columns.Add('Image')) as EXTREELib_TLB.Column) do
	begin
		SortType := EXTREELib_TLB.exSortByImage;
	end;
	with Items do
	begin
		CellImage[OleVariant(AddItem(Null)),OleVariant(0)] := 3;
		AddItem(Null);
		CellImage[OleVariant(AddItem(Null)),OleVariant(0)] := 1;
		CellImage[OleVariant(AddItem(Null)),OleVariant(0)] := 2;
	end;
	Columns.Item[OleVariant(0)].SortOrder := EXTREELib_TLB.SortAscending;
	EndUpdate();
end
691
How can I display UNICODE characters

with Tree1 do
begin
	BeginUpdate();
	with Font do
	begin
		Name := 'Arial Unicode';
		Size := 22;
	end;
	HeaderVisible := False;
	DefaultItemHeight := 48;
	(IUnknown(Columns.Add('')) as EXTREELib_TLB.Column).Def[EXTREELib_TLB.exCellCaptionFormat] := OleVariant(1);
	with Items do
	begin
		AddItem('Ӓӓ');
		AddItem('ᦜᦝ;ᦞ');
		AddItem('ɮɭ;ɯ');
		AddItem('勳勴勵勶');
		FormatCell[OleVariant(AddItem(OleVariant(Tree1.Version))),OleVariant(0)] := '(value lfind `UNICODE`) < 0 ? `<fgcolor=FF0000><b>!UNICODE!</b> version</fgcolor> required: ` + value : `` ';
	end;
	EndUpdate();
end
690
How do I display the position of the item with 0-padding
with Tree1 do
begin
	BeginUpdate();
	(IUnknown(Columns.Add('Items')) as EXTREELib_TLB.Column).FormatColumn := '((1 apos ``) lpad `00`) + `. `  + value';
	with Items do
	begin
		AddItem('Item A');
		AddItem('Item B');
		AddItem('Item C');
		AddItem('Item D');
	end;
	EndUpdate();
end
689
Can't get the +/- to be displayed on a divider item. What else can I do

with Tree1 do
begin
	BeginUpdate();
	LinesAtRoot := EXTREELib_TLB.exLinesAtRoot;
	DrawGridLines := EXTREELib_TLB.exAllLines;
	TreeColumnIndex := 0;
	MarkSearchColumn := False;
	FullRowSelect := False;
	HeaderAppearance := EXTREELib_TLB.AppearanceEnum($fffffff8 Or Integer(EXTREELib_TLB.Bump) Or Integer(EXTREELib_TLB.Sunken));
	with Columns do
	begin
		(IUnknown(Add('C1')) as EXTREELib_TLB.Column).Width := 32;
		(IUnknown(Add('C2')) as EXTREELib_TLB.Column).FormatColumn := '1 index ``';
	end;
	with Items do
	begin
		h := AddItem('Cell 1');
		CellSingleLine[OleVariant(h),OleVariant(1)] := EXTREELib_TLB.exCaptionWordWrap;
		h := AddItem('This is bit of text merges all cells in the item (divider shows no +/-)');
		ItemDivider[h] := 0;
		ItemBackColor[h] := $f0f0f0;
		ItemDividerLine[h] := EXTREELib_TLB.EmptyLine;
		CellHAlignment[OleVariant(h),OleVariant(0)] := EXTREELib_TLB.CenterAlignment;
		InsertItem(h,Null,'Child 1');
		InsertItem(h,Null,'Child 2');
		ExpandItem[h] := True;
		h := AddItem('Cell 3');
		h := AddItem('This is bit of text merges all cells in the item (merge shows +/-)');
		ItemBackColor[h] := $f0f0f0;
		CellMerge[OleVariant(h),OleVariant(0)] := OleVariant(1);
		InsertItem(h,Null,'Child 3');
		InsertItem(h,Null,'Child 4');
		ExpandItem[h] := True;
	end;
	EndUpdate();
end
688
ADODB Requery sample

// CellButtonClick event - Fired after the user clicks on the cell of button type. 
procedure TForm1.Tree1CellButtonClick(ASender: TObject; Item : HITEM;ColIndex : Integer);
begin
	with Tree1 do
	begin
		cmd := (IUnknown(ComObj.CreateComObject(ComObj.ProgIDToClassID('ADODB.Command'))) as ADODB_TLB.Command);
		with cmd do
		begin
			ActiveConnection := (IUnknown((IUnknown(Tree1.DataSource) as ADODB_TLB.Recordset).ActiveConnection) as ADODB_TLB.Connection);
			CommandText := 'INSERT INTO Orders (EmployeeID) VALUES(12345)';
			CommandType := 1;
			Execute(Null,Null,Null);
		end;
		(IUnknown(DataSource) as ADODB_TLB.Recordset).Requery(Null);
	end
end;

with Tree1 do
begin
	BeginUpdate();
	HeaderAppearance := EXTREELib_TLB.Etched;
	ColumnAutoResize := False;
	rs := (IUnknown(ComObj.CreateComObject(ComObj.ProgIDToClassID('ADODB.Recordset'))) as ADODB_TLB.Recordset);
	with rs do
	begin
		Open('Select * From Orders','Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Program Files\Exontrol\ExTree\Sample\Access\sample.accdb',1,3,Null);
	end;
	DataSource := (IUnknown(rs) as ADODB_TLB.Recordset);
	ConditionalFormats.Add('%1=12345',Null).BackColor := $f0f0f0;
	with Items do
	begin
		LockedItemCount[EXTREELib_TLB.TopAlignment] := 1;
		h := LockedItem[EXTREELib_TLB.TopAlignment,0];
		ItemDivider[h] := 0;
		CellHasButton[OleVariant(h),OleVariant(0)] := True;
		CellCaption[OleVariant(h),OleVariant(0)] := 'Requery (add a new record, using ADODB.Command)';
		CellHAlignment[OleVariant(h),OleVariant(0)] := EXTREELib_TLB.CenterAlignment;
	end;
	EndUpdate();
end
687
How do I use the ColumnsFloatBarVisible on exColumnsFloatBarVisibleIncludeCheckColumns

with Tree1 do
begin
	BeginUpdate();
	ColumnAutoResize := False;
	HeaderAppearance := EXTREELib_TLB.Etched;
	with Columns do
	begin
		Add('City');
		(IUnknown(Add('Start')) as EXTREELib_TLB.Column).Visible := False;
		(IUnknown(Add('End')) as EXTREELib_TLB.Column).Visible := False;
	end;
	Description[EXTREELib_TLB.exColumnsFloatBar] := 'Show/Hide';
	ColumnsFloatBarSortOrder := EXTREELib_TLB.SortAscending;
	ColumnsFloatBarVisible := EXTREELib_TLB.exColumnsFloatBarVisibleIncludeCheckColumns;
	EndUpdate();
end
686
How do I use the ColumnsFloatBarVisible on exColumnsFloatBarVisibleIncludeHiddenColumn

with Tree1 do
begin
	BeginUpdate();
	ColumnAutoResize := False;
	HeaderAppearance := EXTREELib_TLB.Etched;
	with Columns do
	begin
		Add('City');
		(IUnknown(Add('Start')) as EXTREELib_TLB.Column).Visible := False;
		(IUnknown(Add('End')) as EXTREELib_TLB.Column).Visible := False;
	end;
	Description[EXTREELib_TLB.exColumnsFloatBar] := 'Show';
	ColumnsFloatBarVisible := EXTREELib_TLB.exColumnsFloatBarVisibleIncludeHiddenColumns;
	ColumnsFloatBarSortOrder := EXTREELib_TLB.SortAscending;
	EndUpdate();
end
685
Type of wraps the cell's caption support (Sample 2)

with Tree1 do
begin
	BeginUpdate();
	HeaderSingleLine := False;
	HeaderHeight := 36;
	DrawGridLines := EXTREELib_TLB.exRowLines;
	ColumnAutoResize := False;
	ScrollBySingleLine := True;
	with Columns do
	begin
		with (IUnknown(Add('Single-Line (exCaptionSingleLine)')) as EXTREELib_TLB.Column) do
		begin
			Width := 96;
			Def[EXTREELib_TLB.exCellCaptionFormat] := OleVariant(1);
			Def[EXTREELib_TLB.exCellSingleLine] := OleVariant(-1);
		end;
		with (IUnknown(Add('Word-Wrap (exCaptionWordWrap)')) as EXTREELib_TLB.Column) do
		begin
			Width := 96;
			Def[EXTREELib_TLB.exCellCaptionFormat] := OleVariant(1);
			Def[EXTREELib_TLB.exCellSingleLine] := OleVariant(0);
			FormatColumn := '%0';
		end;
		with (IUnknown(Add('Break-Wrap (exCaptionBreakWrap)')) as EXTREELib_TLB.Column) do
		begin
			Width := 96;
			Def[EXTREELib_TLB.exCellCaptionFormat] := OleVariant(1);
			Def[EXTREELib_TLB.exCellSingleLine] := OleVariant(1);
			FormatColumn := '%0';
		end;
	end;
	with Items do
	begin
		AddItem('This is the <b>first</b> line.<br>This is the <b>second</b> line.<br>This is the <b>third</b> line.');
		AddItem('This is the <b>first</b> line.\r\nThis is the <b>second</b> line.\r\nThis is the <b>third</b> line.');
	end;
	EndUpdate();
end
684
Type of wraps the cell's caption support (Sample 1)

with Tree1 do
begin
	BeginUpdate();
	HeaderSingleLine := False;
	HeaderHeight := 36;
	DrawGridLines := EXTREELib_TLB.exRowLines;
	ColumnAutoResize := False;
	ScrollBySingleLine := True;
	(IUnknown(Columns.Add('Default')) as EXTREELib_TLB.Column).Width := 128;
	with Items do
	begin
		h := AddItem('This is the first line.\r\nThis is the second line.\r\nThis is the third line.');
		h := AddItem('This is the <b>first</b> line.<br>This is the <b>second</b> line.<br>This is the <b>third</b> line.');
		CellCaptionFormat[OleVariant(h),OleVariant(0)] := EXTREELib_TLB.exHTML;
		h := AddItem('This is the first line.\r\nThis is the second line.\r\nThis is the third line.');
		CellSingleLine[OleVariant(h),OleVariant(0)] := EXTREELib_TLB.exCaptionWordWrap;
		h := AddItem('This is the <b>first</b> line.<br>This is the <b>second</b> line.<br>This is the <b>third</b> line.');
		CellCaptionFormat[OleVariant(h),OleVariant(0)] := EXTREELib_TLB.exHTML;
		CellSingleLine[OleVariant(h),OleVariant(0)] := EXTREELib_TLB.exCaptionWordWrap;
		h := AddItem('This is the first line.\r\nThis is the second line.\r\nThis is the third line.');
		CellSingleLine[OleVariant(h),OleVariant(0)] := EXTREELib_TLB.exCaptionBreakWrap;
		h := AddItem('This is the <b>first</b> line.<br>This is the <b>second</b> line.<br>This is the <b>third</b> line.');
		CellCaptionFormat[OleVariant(h),OleVariant(0)] := EXTREELib_TLB.exHTML;
		CellSingleLine[OleVariant(h),OleVariant(0)] := EXTREELib_TLB.exCaptionBreakWrap;
	end;
	EndUpdate();
end
683
Can I break the cell's caption using the line break <br> or \r\n (Sample 2)

with Tree1 do
begin
	BeginUpdate();
	DrawGridLines := EXTREELib_TLB.exRowLines;
	ColumnAutoResize := False;
	ScrollBySingleLine := True;
	(IUnknown(Columns.Add('Default')) as EXTREELib_TLB.Column).Width := 128;
	with Items do
	begin
		CellSingleLine[OleVariant(AddItem('This is the first line.\r\nThis is the second line.\r\nThis is the third line.')),OleVariant(0)] := EXTREELib_TLB.exCaptionBreakWrap;
		AddItem('This is the first line.\r\nThis is the second line.\r\nThis is the third line.');
	end;
	EndUpdate();
end
682
Can I break the cell's caption using the line break <br> or \r\n (Sample 1)

with Tree1 do
begin
	BeginUpdate();
	DrawGridLines := EXTREELib_TLB.exRowLines;
	ColumnAutoResize := False;
	ScrollBySingleLine := True;
	with (IUnknown(Columns.Add('Default')) as EXTREELib_TLB.Column) do
	begin
		Width := 128;
		Def[EXTREELib_TLB.exCellSingleLine] := OleVariant(1);
	end;
	with Items do
	begin
		AddItem('This is the first line.\r\nThis is the second line.\r\nThis is the third line.');
		AddItem('This is the first line.\r\nThis is the second line.\r\nThis is the third line.');
	end;
	EndUpdate();
end
681
How can I change the visual appearance/color of the Filter For ... field

with Tree1 do
begin
	BeginUpdate();
	LinesAtRoot := EXTREELib_TLB.exLinesAtRoot;
	BackColorHeader := RGB(1,0,0);
	ForeColorHeader := RGB(255,255,255);
	Background[EXTREELib_TLB.exBackColorFilter] := BackColorHeader;
	Background[EXTREELib_TLB.exForeColorFilter] := ForeColorHeader;
	Background[EXTREELib_TLB.exHeaderFilterBarButton] := $f0f0f0;
	Background[EXTREELib_TLB.exCursorHoverColumn] := $ffffffff;
	HeaderAppearance := EXTREELib_TLB.Bump;
	with (IUnknown(Columns.Add('Items')) as EXTREELib_TLB.Column) do
	begin
		FilterOnType := True;
		DisplayFilterButton := True;
		FilterList := EXTREELib_TLB.exNoItems;
	end;
	with Items do
	begin
		h := AddItem('Root 1');
		InsertItem(h,Null,'Child 1');
		InsertItem(h,Null,'Child 2');
		ExpandItem[h] := True;
		h := AddItem('Root 2');
		InsertItem(h,Null,'Child 1');
		InsertItem(h,Null,'Child 2');
	end;
	EndUpdate();
end
680
How can I display the cell's caption without spaces on both sides

with Tree1 do
begin
	BeginUpdate();
	ColumnAutoResize := True;
	with (IUnknown(Columns.Add('Default')) as EXTREELib_TLB.Column) do
	begin
		Def[EXTREELib_TLB.exCellCaptionFormat] := OleVariant(1);
		FormatColumn := '((trim(value) replace `   ` with ` `) replace `  ` with ` `) replace ` ` with `<bgcolor=FF0000> </bgcolor>`';
	end;
	with Items do
	begin
		AddItem('');
		AddItem('Item A');
		AddItem('    Item B');
		AddItem('        Item   C    ');
	end;
	EndUpdate();
end
679
How can I highlight the spaces within the column (sample 2)

with Tree1 do
begin
	BeginUpdate();
	ColumnAutoResize := True;
	with (IUnknown(Columns.Add('Default')) as EXTREELib_TLB.Column) do
	begin
		Def[EXTREELib_TLB.exCellCaptionFormat] := OleVariant(1);
		FormatColumn := '`''` + ( value replace ` ` with `_` ) + `''`';
	end;
	with Items do
	begin
		AddItem('');
		AddItem('Item A');
		AddItem('    Item B');
		AddItem('        Item   C    ');
	end;
	EndUpdate();
end
678
How can I highlight the spaces within the column (sample 1)

with Tree1 do
begin
	BeginUpdate();
	ColumnAutoResize := True;
	with (IUnknown(Columns.Add('Default')) as EXTREELib_TLB.Column) do
	begin
		Def[EXTREELib_TLB.exCellCaptionFormat] := OleVariant(1);
		FormatColumn := 'len(value) = 0 ? `<bgcolor=FF0000> </bgcolor>` : ( value replace ` ` with `<bgcolor=FF0000> </bgcolor>` )';
	end;
	with Items do
	begin
		AddItem('');
		AddItem('Item A');
		AddItem('    Item B');
		AddItem('        Item   C    ');
	end;
	EndUpdate();
end
677
How can I change the visual aspect of the drop down filter-calendar

with Tree1 do
begin
	BeginUpdate();
	Background[EXTREELib_TLB.exBackColorFilter] := $10000;
	Background[EXTREELib_TLB.exForeColorFilter] := $ffffff;
	Background[EXTREELib_TLB.exDateScrollRange] := $ffffff;
	Background[EXTREELib_TLB.exDateHeader] := Background[EXTREELib_TLB.exBackColorFilter];
	Background[EXTREELib_TLB.exDateScrollThumb] := $808080;
	with (IUnknown(Columns.Add('Date')) as EXTREELib_TLB.Column) do
	begin
		FilterType := EXTREELib_TLB.exDate;
		DisplayFilterButton := True;
		DisplayFilterDate := True;
		DisplayFilterPattern := False;
	end;
	EndUpdate();
end
676
Export Data in HTML format

with Tree1 do
begin
	BeginUpdate();
	LinesAtRoot := EXTREELib_TLB.exLinesAtRoot;
	BackColorAlternate := RGB(240,240,240);
	DrawGridLines := EXTREELib_TLB.exAllLines;
	HeaderAppearance := EXTREELib_TLB.Etched;
	Description[EXTREELib_TLB.exFilterBarAnd] := FormatABC('`<fgcolor=808080> ` + value + ` </fgcolor>`',OleVariant(Description[EXTREELib_TLB.exFilterBarAnd]),Null,Null);
	FilterBarCaption := '(( ( value replace `[<b>` with `<bgcolor=000000><fgcolor=FFFFFF><b> ` replace `</b>]` with ` </b></bgcolor></fgcolor>` replace `' + 
	'[<s>` with `<bgcolor=C0C0C0><fgcolor=FFFFFF> ` replace `</s>]` with ` </fgcolor></bgcolor>` )  + `<r><fgcolor=808080>` + ( match' + 
	'itemcount < 0 ? ( ( len(value) ? `` : `` ) + `<r>` + abs(matchitemcount + 1) + ` result(s)` ) : (`<r><fgcolor=808080>`+ itemcoun' + 
	't + ` item(s)`) )))';
	FilterBarPromptVisible := Integer(EXTREELib_TLB.exFilterBarCompact) Or Integer(EXTREELib_TLB.exFilterBarShowCloseIfRequired) Or Integer(EXTREELib_TLB.exFilterBarSingleLine) Or Integer(EXTREELib_TLB.exFilterBarVisible) Or Integer(EXTREELib_TLB.exFilterBarPromptVisible);
	FilterBarPromptType := EXTREELib_TLB.exFilterPromptContainsAny;
	with ConditionalFormats do
	begin
		Add('%0 like `*parent*`','parent').BackColor := $c0c0c0;
		with Add('%0 like `*child*`','child') do
		begin
			ForeColor := $8080ff;
			ApplyTo := EXTREELib_TLB.exFormatToColumns;
		end;
		with Add('%0 like `*B*`','b') do
		begin
			ForeColor := $ff0000;
			Bold := True;
			Italic := True;
			ApplyTo := EXTREELib_TLB.exFormatToColumns;
		end;
	end;
	with Columns do
	begin
		with (IUnknown(Add('Value')) as EXTREELib_TLB.Column) do
		begin
			Width := 128;
			HTMLCaption := '<b>VA</b><r>sko';
		end;
		with (IUnknown(Add('APos')) as EXTREELib_TLB.Column) do
		begin
			FormatColumn := '0 apos ``';
			AllowSort := False;
			Def[EXTREELib_TLB.exCellBackColor] := OleVariant(15790320);
			Def[EXTREELib_TLB.exCellForeColor] := OleVariant(8421504);
			Def[EXTREELib_TLB.exHeaderForeColor] := Def[EXTREELib_TLB.exCellForeColor];
			Position := 0;
		end;
		with (IUnknown(Add('RPos')) as EXTREELib_TLB.Column) do
		begin
			FormatColumn := '0 rpos ``';
			AllowSort := False;
			Position := 1;
		end;
		with (IUnknown(Add('Index')) as EXTREELib_TLB.Column) do
		begin
			FormatColumn := '0 index ``';
			DisplayFilterButton := True;
			FilterList := EXTREELib_TLB.exShowCheckBox;
			Position := 2;
		end;
		with (IUnknown(Add('Data 1')) as EXTREELib_TLB.Column) do
		begin
			FormatColumn := '0 index `A-Z`';
			Def[EXTREELib_TLB.exCellHasCheckBox] := OleVariant(True);
		end;
		with (IUnknown(Add('Data 2')) as EXTREELib_TLB.Column) do
		begin
			FormatColumn := '0 index `AB` replace `A` with `<off -4>A</off>`';
			Def[EXTREELib_TLB.exCellSingleLine] := OleVariant(False);
			Def[EXTREELib_TLB.exCellCaptionFormat] := OleVariant(1);
			Def[EXTREELib_TLB.exCellHasRadioButton] := OleVariant(True);
		end;
		with (IUnknown(Add('Data 3')) as EXTREELib_TLB.Column) do
		begin
			FormatColumn := '0 index `CDC` replace `D` with `<b>D</b>`';
			Def[EXTREELib_TLB.exCellCaptionFormat] := OleVariant(1);
		end;
	end;
	with Items do
	begin
		h := AddItem('ParentA');
		InsertItem(h,Null,'Child A');
		InsertItem(h,Null,'Child B');
		CellState[OleVariant(h),OleVariant(4)] := 1;
		CellBackColor[OleVariant(InsertItem(h,Null,'Child C')),OleVariant(5)] := $ff00;
		ExpandItem[h] := True;
		AddItem('Item A');
		h := AddItem('ParentB');
		InsertItem(h,Null,'Child 1');
		InsertItem(h,Null,'Child 2');
		CellBackColor[OleVariant(InsertItem(h,Null,'Child 3')),OleVariant(5)] := $ff00;
		CellState[OleVariant(h),OleVariant(5)] := 1;
		AddItem('Item B');
		AddItem('Item C');
		AddItem('Item D');
		ExpandItem[h] := True;
	end;
	EndUpdate();
	sFile := 'c:/temp/export.html';
	Export(OleVariant(sFile),'vis');
	with (IUnknown(ComObj.CreateComObject(ComObj.ProgIDToClassID('InternetExplorer.Application'))) as SHDocVw_TLB.ShellBrowserWindow) do
	begin
		Navigate2(sFile,Null,Null,Null,Null);
	end;
end
675
Export Data in CSV format

with Tree1 do
begin
	BeginUpdate();
	LinesAtRoot := EXTREELib_TLB.exLinesAtRoot;
	BackColorAlternate := RGB(240,240,240);
	DrawGridLines := EXTREELib_TLB.exAllLines;
	HeaderAppearance := EXTREELib_TLB.Etched;
	Description[EXTREELib_TLB.exFilterBarAnd] := FormatABC('`<fgcolor=808080> ` + value + ` </fgcolor>`',OleVariant(Description[EXTREELib_TLB.exFilterBarAnd]),Null,Null);
	FilterBarCaption := '(( ( value replace `[<b>` with `<bgcolor=000000><fgcolor=FFFFFF><b> ` replace `</b>]` with ` </b></bgcolor></fgcolor>` replace `' + 
	'[<s>` with `<bgcolor=C0C0C0><fgcolor=FFFFFF> ` replace `</s>]` with ` </fgcolor></bgcolor>` )  + `<r><fgcolor=808080>` + ( match' + 
	'itemcount < 0 ? ( ( len(value) ? `` : `` ) + `<r>` + abs(matchitemcount + 1) + ` result(s)` ) : (`<r><fgcolor=808080>`+ itemcoun' + 
	't + ` item(s)`) )))';
	FilterBarPromptVisible := Integer(EXTREELib_TLB.exFilterBarCompact) Or Integer(EXTREELib_TLB.exFilterBarShowCloseIfRequired) Or Integer(EXTREELib_TLB.exFilterBarSingleLine) Or Integer(EXTREELib_TLB.exFilterBarVisible) Or Integer(EXTREELib_TLB.exFilterBarPromptVisible);
	FilterBarPromptType := EXTREELib_TLB.exFilterPromptContainsAny;
	with ConditionalFormats do
	begin
		Add('%0 like `*parent*`','parent').BackColor := $c0c0c0;
		with Add('%0 like `*child*`','child') do
		begin
			ForeColor := $8080ff;
			ApplyTo := EXTREELib_TLB.exFormatToColumns;
		end;
		with Add('%0 like `*B*`','b') do
		begin
			ForeColor := $ff0000;
			Bold := True;
			Italic := True;
			ApplyTo := EXTREELib_TLB.exFormatToColumns;
		end;
	end;
	with Columns do
	begin
		with (IUnknown(Add('Value')) as EXTREELib_TLB.Column) do
		begin
			Width := 128;
			HTMLCaption := '<b>VA</b><r>sko';
		end;
		with (IUnknown(Add('APos')) as EXTREELib_TLB.Column) do
		begin
			FormatColumn := '0 apos ``';
			AllowSort := False;
			Def[EXTREELib_TLB.exCellBackColor] := OleVariant(15790320);
			Def[EXTREELib_TLB.exCellForeColor] := OleVariant(8421504);
			Def[EXTREELib_TLB.exHeaderForeColor] := Def[EXTREELib_TLB.exCellForeColor];
			Position := 0;
		end;
		with (IUnknown(Add('RPos')) as EXTREELib_TLB.Column) do
		begin
			FormatColumn := '0 rpos ``';
			AllowSort := False;
			Position := 1;
		end;
		with (IUnknown(Add('Index')) as EXTREELib_TLB.Column) do
		begin
			FormatColumn := '0 index ``';
			DisplayFilterButton := True;
			FilterList := EXTREELib_TLB.exShowCheckBox;
			Position := 2;
		end;
		with (IUnknown(Add('Data 1')) as EXTREELib_TLB.Column) do
		begin
			FormatColumn := '0 index `A-Z`';
			Def[EXTREELib_TLB.exCellHasCheckBox] := OleVariant(True);
		end;
		with (IUnknown(Add('Data 2')) as EXTREELib_TLB.Column) do
		begin
			FormatColumn := '0 index `AB` replace `A` with `<off -4>A</off>`';
			Def[EXTREELib_TLB.exCellSingleLine] := OleVariant(False);
			Def[EXTREELib_TLB.exCellCaptionFormat] := OleVariant(1);
			Def[EXTREELib_TLB.exCellHasRadioButton] := OleVariant(True);
		end;
		with (IUnknown(Add('Data 3')) as EXTREELib_TLB.Column) do
		begin
			FormatColumn := '0 index `CDC` replace `D` with `<b>D</b>`';
			Def[EXTREELib_TLB.exCellCaptionFormat] := OleVariant(1);
		end;
	end;
	with Items do
	begin
		h := AddItem('ParentA');
		InsertItem(h,Null,'Child A');
		InsertItem(h,Null,'Child B');
		CellState[OleVariant(h),OleVariant(4)] := 1;
		CellBackColor[OleVariant(InsertItem(h,Null,'Child C')),OleVariant(5)] := $ff00;
		ExpandItem[h] := True;
		AddItem('Item A');
		h := AddItem('ParentB');
		InsertItem(h,Null,'Child 1');
		InsertItem(h,Null,'Child 2');
		CellBackColor[OleVariant(InsertItem(h,Null,'Child 3')),OleVariant(5)] := $ff00;
		CellState[OleVariant(h),OleVariant(5)] := 1;
		AddItem('Item B');
		AddItem('Item C');
		AddItem('Item D');
		ExpandItem[h] := True;
	end;
	EndUpdate();
	OutputDebugString( Export('','vis') );
end
674
Is it possible to check multiple-items at once

// AddItem event - Occurs after a new Item has been inserted to Items collection.
procedure TForm1.Tree1AddItem(ASender: TObject; Item : HITEM);
begin
	with Tree1 do
	begin
		bHasParent := FormatABC('value != 0',Items.ItemParent[Item],Null,Null);
		with Items do
		begin
			CellHasCheckBox[OleVariant(Item),OleVariant(0)] := False;
		end;
	end
end;

with Tree1 do
begin
	BeginUpdate();
	LinesAtRoot := EXTREELib_TLB.exLinesAtRoot;
	with (IUnknown(Columns.Add('Tasks')) as EXTREELib_TLB.Column) do
	begin
		Def[EXTREELib_TLB.exCellCaptionFormat] := OleVariant(1);
		FormatColumn := 'value + (%CS0 = 1 ? `<r><fgcolor=808080>(checked)` : ``)';
	end;
	HeaderVisible := True;
	SingleSel := False;
	with Items do
	begin
		h := AddItem('Project');
		hChild := InsertItem(h,Null,'Task 1');
		hChild := InsertItem(h,Null,'Task 2');
		hChild := InsertItem(h,Null,'Task 3');
		ExpandItem[h] := True;
		LockedItemCount[EXTREELib_TLB.TopAlignment] := 1;
		CellCaption[OleVariant(LockedItem[EXTREELib_TLB.TopAlignment,0]),OleVariant(0)] := '<c>Select multiple items and press the <b>SPACE</b> key';
	end;
	EndUpdate();
end
673
How can I get the icon from the cell when using the Items.CellImages property (icon index)

// MouseMove event - Occurs when the user moves the mouse.
procedure TForm1.Tree1MouseMove(ASender: TObject; Button : Smallint;Shift : Smallint;X : Integer;Y : Integer);
begin
	with Tree1 do
	begin
		i := ItemFromPoint[-1,-1,c,hit];
		OutputDebugString( FormatABC('( 0x44 = ( value bitand 0x44 ) ) ? ( ( (value bitand 0xFFFF0000) bitshift 16 ) array B split `,` )  : `no image`',OleVariant(hit),Items.CellImages[OleVariant(i),OleVariant(c)],Null) );
	end
end;

with Tree1 do
begin
	BeginUpdate();
	Images('gBJJgBAIDAAGAAEAAQhYAf8Pf4hh0QihCJo2AEZjQAjEZFEaIEaEEaAIAkcbk0olUrlktl0vmExmUzmk1m03nE5nU7nk9n0/oFBoVDolFo1HpFJpVLplNp1PqFRqVTql' + 
	'Vq1XrFZrVbrldr1fsFhsVjslls1ntFptVrtltt1vuFxuVzul1u13vF5vV7vl9v1/wGBwWDwmFw2HxGJxWLxmNx0xiFdyOTh8Tf9ZymXx+QytcyNgz8r0OblWjyWds+m0' + 
	'ka1Vf1ta1+r1mos2xrG2xeZ0+a0W0qOx3GO4NV3WeyvD2XJ5XL5nN51aiw+lfSj0gkUkAEllHanHI5j/cHg8EZf7w8vl8j4f/qfEZeB09/vjLAB30+kZQAP/P5/H6/yN' + 
	'AOAEAwCjMBwFAEDwJBMDwLBYAP2/8Hv8/gAGAD8LQs9w/nhDY/oygIA=');
	Columns.Add('Default');
	with Items do
	begin
		CellImages[OleVariant(AddItem('Item 1')),OleVariant(0)] := '3,2,1';
		CellImages[OleVariant(AddItem('Item 2')),OleVariant(0)] := '2,3';
		CellImages[OleVariant(AddItem('Item 3')),OleVariant(0)] := '2,';
	end;
	EndUpdate();
end
672
How can I get the icon from the cell when using the Items.CellImages property (icon position within the cell)

// MouseMove event - Occurs when the user moves the mouse.
procedure TForm1.Tree1MouseMove(ASender: TObject; Button : Smallint;Shift : Smallint;X : Integer;Y : Integer);
begin
	with Tree1 do
	begin
		i := ItemFromPoint[-1,-1,c,hit];
		OutputDebugString( FormatABC('( 0x44 = ( value bitand 0x44 ) ) ? 1 + ( (value bitand 0xFFFF0000) bitshift 16 ) : `no image`',OleVariant(hit),Null,Null) );
	end
end;

with Tree1 do
begin
	BeginUpdate();
	Images('gBJJgBAIDAAGAAEAAQhYAf8Pf4hh0QihCJo2AEZjQAjEZFEaIEaEEaAIAkcbk0olUrlktl0vmExmUzmk1m03nE5nU7nk9n0/oFBoVDolFo1HpFJpVLplNp1PqFRqVTql' + 
	'Vq1XrFZrVbrldr1fsFhsVjslls1ntFptVrtltt1vuFxuVzul1u13vF5vV7vl9v1/wGBwWDwmFw2HxGJxWLxmNx0xiFdyOTh8Tf9ZymXx+QytcyNgz8r0OblWjyWds+m0' + 
	'ka1Vf1ta1+r1mos2xrG2xeZ0+a0W0qOx3GO4NV3WeyvD2XJ5XL5nN51aiw+lfSj0gkUkAEllHanHI5j/cHg8EZf7w8vl8j4f/qfEZeB09/vjLAB30+kZQAP/P5/H6/yN' + 
	'AOAEAwCjMBwFAEDwJBMDwLBYAP2/8Hv8/gAGAD8LQs9w/nhDY/oygIA=');
	Columns.Add('Default');
	with Items do
	begin
		CellImages[OleVariant(AddItem('Item 1')),OleVariant(0)] := '3,2,1';
		CellImages[OleVariant(AddItem('Item 2')),OleVariant(0)] := '2,3';
		CellImages[OleVariant(AddItem('Item 3')),OleVariant(0)] := '2';
	end;
	EndUpdate();
end
671
Is it possible to change the visual appearance of the position signs when user changes the column's position by drag and drop

with Tree1 do
begin
	BeginUpdate();
	HeaderAppearance := EXTREELib_TLB.Etched;
	with Columns do
	begin
		Add('Column 1');
		Add('Column 2');
		Add('Column 3');
	end;
	with VisualAppearance do
	begin
		Add(1,'gBFLBCJwBAEHhEJAAEhABZEGACAADACAxRDgMQBQKAAzAJBIYhiG4cYCgMYxXDOCYXABCEYRXBIZQ7BKNIxjSJwFgmEgADKMA4SOKIZhrE4bBhGaQRUgyI43RhHUBzVI' + 
	'UcQvE6TZRHCQYHgkNIhDJIM7TPLkeSVJaTIRoKhJUogApQThTMgVRDEThkGoSa6soSoYTDBKybLrSLKagOT5YUDKUqSdKEZRpEq1YztWbaQoCUoqVRRVIWfbNd4JJa4a' + 
	'DhWpYdpeeY5R7bWLgBYVVABL7LLRsSxpHxPF6RXxaeI3GKsaS8G6ic6nPQMHj7I4NS5pUa6Rh2VYNSa8AAtETRYznOw4bTMXAjNIea5bAYIIR5HIoDzVbQcCQAHL9DBe' + 
	'EMIQEEISgGhMGZQmocgymoYRRCIEQ0G2HYBnEIBig4V4zCQGINnmagCECY43medZ6H2Pw/g+X5fnueh/h+R5+AKABfkMWgGgGYA4AICoCGCE5WA4CphACMgSD2IRIDIB' + 
	'ICmEd5YGCBpRjGBgegWIYIgWdgoGIRQsiKCZiAiJZ0gGQI4jUS4LECOAiBmDJflGfg2BSY4Al4OhGkOCJ2DgFJjGGfgqgiH5Ch4RhGkqOQmEOEpkFkHQYhJRYyESAokG' + 
	'KHhIhKIxJEmf4VGUeRGFmF5iBkchPhYJQ5GoYIZg6Ug6GoFYmkmNhuhulRGHKGoImefh0BUZ4JmYeoemeSZ2H6HQmgoBgXDqXwUAQgI=');
		Add(2,'CP:1 0 -36 0 0');
	end;
	Background[EXTREELib_TLB.exColumnsPositionSign] := $2000000;
	EndUpdate();
end
670
A black portion is shown while I am using the BackColorAlternate with EBN colors. What can I do

with Tree1 do
begin
	BeginUpdate();
	ColumnAutoResize := True;
	DefaultItemHeight := 20;
	VisualAppearance.Add(1,'gBFLBCJwBAEHhEJAAEhIDhAxHAxg0HG0Mg4xGI3HMOig3GcJiYAf8jAEhhUnAAyhEqg8hk0oAsIjgAiAwmYxGA4mYzGwwkI0i0ooUnB0IBMIl1Dg8zmYyGolptPkI1mY' + 
	'1GAll9KoUslNIrVCqNQldShFUstXAVfrVcrlZtVhuFnsUHq1zoczoQGhFBkNpg6zbDykUkhsPHE2h85nc9n8xtVDtlex9Msd2p1YstVq9ux8HyMtzuFz1PsNTzQlv2hh' + 
	'WfkuqpeVuN0q+nvEooN5veSAGpkb/ACcZrvhU3w83nM/poxGuchGpoVBvWgg+8knA4WimnFxI45Er5XOlHMg/Q3XU33W4ew9Wyu11mchDagcO7zus8VDoNBBEIKBpMY6' + 
	'DqOQyokhA/IQIQmwMk4bIQFDcoO6LWgwhQkNcABwEyAB5GwWbet6cRQg3DENQ5D8QxADZvEkAB8nabsURGeBpFM3pwE2AEZRpDx/neZpOR3Dz9oO/r/wCMoZNTBQAQRJ' + 
	'SEwYg8HPGhEIoNCaEwq10gQ2WcRt7LcRxRFpuxUAEURQ3sczBEMgTTG8gN7HpOSEAEiQBAQZpmQ0DibPUFwbKcHwkhQoQtNQNzNEMbABOKDy/DMYQzHLeoPL0OTJSUd0' + 
	'pHcxTewk5zrIygIRPslz4lEngBKIAQivgASs/kLSBTlO00f8t0vGcgUbDlDRjXLCUNRERRvRgAHW2oAICA==');
	with (IUnknown(Columns.Add('Default')) as EXTREELib_TLB.Column) do
	begin
		Def[EXTREELib_TLB.exCellHasCheckBox] := OleVariant(True);
		PartialCheck := True;
	end;
	with (IUnknown(Columns.Add('Position')) as EXTREELib_TLB.Column) do
	begin
		FormatColumn := '1 rindex ``';
		Visible := False;
	end;
	with ConditionalFormats.Add('%C1 mod 2',Null) do
	begin
		BackColor := $1000000;
	end;
	with Items do
	begin
		AddItem('Item 1');
		AddItem('Item 2');
		AddItem('Item 3');
		AddItem('Item 4');
	end;
	EndUpdate();
end
669
How can I specify alternate background colors for each root item, similar with BackColorAlternate

with Tree1 do
begin
	BeginUpdate();
	LinesAtRoot := EXTREELib_TLB.exLinesAtRoot;
	with (IUnknown(Columns.Add('Default')) as EXTREELib_TLB.Column) do
	begin
		Def[EXTREELib_TLB.exCellHasCheckBox] := OleVariant(True);
		PartialCheck := True;
	end;
	with (IUnknown(Columns.Add('Position')) as EXTREELib_TLB.Column) do
	begin
		FormatColumn := '( ( 1:=( ( 0:=(1 rpos '''') ) lfind `.`) ) < 0 ? =:0 : (=:0 left =:1) )';
		Visible := False;
	end;
	with ConditionalFormats.Add('%C1 mod 2',Null) do
	begin
		BackColor := $f0f0f0;
	end;
	with Items do
	begin
		h := AddItem('Root 1');
		InsertItem(h,Null,'Child 1');
		InsertItem(h,Null,'Child 2');
		ExpandItem[h] := True;
		h := AddItem('Root 2');
		InsertItem(h,Null,'Child 1');
		InsertItem(h,Null,'Child 2');
		h := AddItem('Root 3');
		InsertItem(h,Null,'Child 1');
		InsertItem(h,Null,'Child 2');
	end;
	EndUpdate();
end
668
Is it possible to change the caption from a column without to remove the column and add it with the new caption
with Tree1 do
begin
	(IUnknown(Columns.Add('ColumnName')) as EXTREELib_TLB.Column).Caption := 'NewName';
	(IUnknown(Columns.Add('ColumnName')) as EXTREELib_TLB.Column).HTMLCaption := '<b>New</b>Name';
end
667
FilterBarCaption ALL Keyword ( sample 2, result )

// AddItem event - Occurs after a new Item has been inserted to Items collection.
procedure TForm1.Tree1AddItem(ASender: TObject; Item : HITEM);
begin
	with Tree1 do
	begin
		i := FormatABC('value + 1',Items.ItemToIndex[Item],Null,Null);
		Items.CellImage[OleVariant(Item),OleVariant(3)] := i;
	end
end;

with Tree1 do
begin
	BeginUpdate();
	Images('gBJJgBAIDAAGAAEAAQhYAf8Pf4hh0QihCJo2AEZjQAjEZFEaIEaEEaAIAkcbk0olUrlktl0vmExmUzmk1m03nE5nU7nk9n0/oFBoVDolFo1HpFJpVLplNp1PqFRqVTql' + 
	'Vq1XrFZrVbrldr1fsFhsVjslls1ntFptVrtltt1vuFxuVzul1u13vF5vV7vl9v1/wGBwWDwmFw2HxGJxWLxmNx0xiFdyOTh8Tf9ZymXx+QytcyNgz8r0OblWjyWds+m0' + 
	'ka1Vf1ta1+r1mos2xrG2xeZ0+a0W0qOx3GO4NV3WeyvD2XJ5XL5nN51aiw+lfSj0gkUkAEllHanHI5j/cHg8EZf7w8vl8j4f/qfEZeB09/vjLAB30+kZQAP/P5/H6/yN' + 
	'AOAEAwCjMBwFAEDwJBMDwLBYAP2/8Hv8/gAGAD8LQs9w/nhDY/oygIA=');
	with (IUnknown(Columns.Add('Col-1')) as EXTREELib_TLB.Column) do
	begin
		DisplayFilterButton := True;
		FilterList := Integer(EXTREELib_TLB.exShowExclude) Or Integer(EXTREELib_TLB.exShowFocusItem) Or Integer(EXTREELib_TLB.exShowCheckBox) Or Integer(EXTREELib_TLB.exSortItemsAsc);
	end;
	with (IUnknown(Columns.Add('Col-2')) as EXTREELib_TLB.Column) do
	begin
		DisplayFilterButton := True;
		FilterList := Integer(EXTREELib_TLB.exShowExclude) Or Integer(EXTREELib_TLB.exShowFocusItem) Or Integer(EXTREELib_TLB.exShowCheckBox) Or Integer(EXTREELib_TLB.exSortItemsAsc);
	end;
	with (IUnknown(Columns.Add('Check')) as EXTREELib_TLB.Column) do
	begin
		Def[EXTREELib_TLB.exCellHasCheckBox] := OleVariant(True);
		DisplayFilterButton := True;
		DisplayFilterPattern := False;
		FilterType := EXTREELib_TLB.exCheck;
	end;
	with (IUnknown(Columns.Add('Image')) as EXTREELib_TLB.Column) do
	begin
		DisplayFilterButton := True;
		FilterType := EXTREELib_TLB.exImage;
		FilterList := Integer(EXTREELib_TLB.exShowExclude) Or Integer(EXTREELib_TLB.exShowFocusItem) Or Integer(EXTREELib_TLB.exShowCheckBox);
	end;
	with (IUnknown(Columns.Add('Pos')) as EXTREELib_TLB.Column) do
	begin
		AllowSizing := False;
		AllowSort := False;
		Width := 32;
		FormatColumn := '1 apos ``';
		Position := 0;
	end;
	with Items do
	begin
		CellCaption[OleVariant(AddItem('Item A')),OleVariant(1)] := 'Sub-Item A';
		h := AddItem('Item B');
		CellCaption[OleVariant(h),OleVariant(1)] := 'Sub-Item B';
		CellState[OleVariant(h),OleVariant(2)] := 1;
		CellCaption[OleVariant(AddItem('Item C')),OleVariant(1)] := 'Sub-Item C';
	end;
	FilterBarFont := (IUnknown(Font) as stdole_TLB.StdFont);
	Description[EXTREELib_TLB.exFilterBarAnd] := FormatABC('`<fgcolor=808080> ` + value + ` </fgcolor>`',OleVariant(Description[EXTREELib_TLB.exFilterBarAnd]),Null,Null);
	FilterBarCaption := '(( ( all replace `[<b>` with `<bgcolor=000000><fgcolor=FFFFFF><b> ` replace `</b>]` with ` </b></bgcolor></fgcolor>` replace `[<' + 
	's>` with `<bgcolor=C0C0C0><fgcolor=FFFFFF> ` replace `</s>]` with ` </fgcolor></bgcolor>` )  + `<r><fgcolor=808080>` + ( matchit' + 
	'emcount < 0 ? ( ( len(value) ? `` : `` ) + `<r>` + abs(matchitemcount + 1) + ` result(s)` ) : (`<r><fgcolor=808080>`+ itemcount ' + 
	'+ ` item(s)`) )))';
	FilterBarPromptVisible := Integer(EXTREELib_TLB.exFilterBarVisible) Or Integer(EXTREELib_TLB.exFilterBarPromptVisible);
	with Columns.Item[OleVariant(0)] do
	begin
		FilterType := EXTREELib_TLB.exFilter;
		Filter := 'Item A|Item B';
	end;
	Columns.Item[OleVariant(2)].Filter := 1;
	ApplyFilter();
	EndUpdate();
end
666
FilterBarCaption ALL Keyword ( sample 1 )

// AddItem event - Occurs after a new Item has been inserted to Items collection.
procedure TForm1.Tree1AddItem(ASender: TObject; Item : HITEM);
begin
	with Tree1 do
	begin
		i := FormatABC('value + 1',Items.ItemToIndex[Item],Null,Null);
		Items.CellImage[OleVariant(Item),OleVariant(3)] := i;
	end
end;

with Tree1 do
begin
	BeginUpdate();
	Images('gBJJgBAIDAAGAAEAAQhYAf8Pf4hh0QihCJo2AEZjQAjEZFEaIEaEEaAIAkcbk0olUrlktl0vmExmUzmk1m03nE5nU7nk9n0/oFBoVDolFo1HpFJpVLplNp1PqFRqVTql' + 
	'Vq1XrFZrVbrldr1fsFhsVjslls1ntFptVrtltt1vuFxuVzul1u13vF5vV7vl9v1/wGBwWDwmFw2HxGJxWLxmNx0xiFdyOTh8Tf9ZymXx+QytcyNgz8r0OblWjyWds+m0' + 
	'ka1Vf1ta1+r1mos2xrG2xeZ0+a0W0qOx3GO4NV3WeyvD2XJ5XL5nN51aiw+lfSj0gkUkAEllHanHI5j/cHg8EZf7w8vl8j4f/qfEZeB09/vjLAB30+kZQAP/P5/H6/yN' + 
	'AOAEAwCjMBwFAEDwJBMDwLBYAP2/8Hv8/gAGAD8LQs9w/nhDY/oygIA=');
	with (IUnknown(Columns.Add('Col-1')) as EXTREELib_TLB.Column) do
	begin
		DisplayFilterButton := True;
		FilterList := Integer(EXTREELib_TLB.exShowExclude) Or Integer(EXTREELib_TLB.exShowFocusItem) Or Integer(EXTREELib_TLB.exShowCheckBox) Or Integer(EXTREELib_TLB.exSortItemsAsc);
	end;
	with (IUnknown(Columns.Add('Col-2')) as EXTREELib_TLB.Column) do
	begin
		DisplayFilterButton := True;
		FilterList := Integer(EXTREELib_TLB.exShowExclude) Or Integer(EXTREELib_TLB.exShowFocusItem) Or Integer(EXTREELib_TLB.exShowCheckBox) Or Integer(EXTREELib_TLB.exSortItemsAsc);
	end;
	with (IUnknown(Columns.Add('Check')) as EXTREELib_TLB.Column) do
	begin
		Def[EXTREELib_TLB.exCellHasCheckBox] := OleVariant(True);
		DisplayFilterButton := True;
		DisplayFilterPattern := False;
		FilterType := EXTREELib_TLB.exCheck;
	end;
	with (IUnknown(Columns.Add('Image')) as EXTREELib_TLB.Column) do
	begin
		DisplayFilterButton := True;
		FilterType := EXTREELib_TLB.exImage;
		FilterList := Integer(EXTREELib_TLB.exShowExclude) Or Integer(EXTREELib_TLB.exShowFocusItem) Or Integer(EXTREELib_TLB.exShowCheckBox);
	end;
	with (IUnknown(Columns.Add('Pos')) as EXTREELib_TLB.Column) do
	begin
		AllowSizing := False;
		AllowSort := False;
		Width := 32;
		FormatColumn := '1 apos ``';
		Position := 0;
	end;
	with Items do
	begin
		CellCaption[OleVariant(AddItem('Item A')),OleVariant(1)] := 'Sub-Item A';
		h := AddItem('Item B');
		CellCaption[OleVariant(h),OleVariant(1)] := 'Sub-Item B';
		CellState[OleVariant(h),OleVariant(2)] := 1;
		CellCaption[OleVariant(AddItem('Item C')),OleVariant(1)] := 'Sub-Item C';
	end;
	FilterBarFont := (IUnknown(Font) as stdole_TLB.StdFont);
	Description[EXTREELib_TLB.exFilterBarAnd] := FormatABC('`<fgcolor=808080> ` + value + ` </fgcolor>`',OleVariant(Description[EXTREELib_TLB.exFilterBarAnd]),Null,Null);
	FilterBarCaption := 'all';
	FilterBarPromptVisible := Integer(EXTREELib_TLB.exFilterBarVisible) Or Integer(EXTREELib_TLB.exFilterBarPromptVisible);
	with Columns.Item[OleVariant(0)] do
	begin
		FilterType := EXTREELib_TLB.exFilter;
		Filter := 'Item A|Item B';
	end;
	Columns.Item[OleVariant(2)].Filter := 1;
	ApplyFilter();
	EndUpdate();
end
665
FilterBarCaption ALLUI Keyword ( sample 2, result )

// AddItem event - Occurs after a new Item has been inserted to Items collection.
procedure TForm1.Tree1AddItem(ASender: TObject; Item : HITEM);
begin
	with Tree1 do
	begin
		i := FormatABC('value + 1',Items.ItemToIndex[Item],Null,Null);
		Items.CellImage[OleVariant(Item),OleVariant(3)] := i;
	end
end;

with Tree1 do
begin
	BeginUpdate();
	Images('gBJJgBAIDAAGAAEAAQhYAf8Pf4hh0QihCJo2AEZjQAjEZFEaIEaEEaAIAkcbk0olUrlktl0vmExmUzmk1m03nE5nU7nk9n0/oFBoVDolFo1HpFJpVLplNp1PqFRqVTql' + 
	'Vq1XrFZrVbrldr1fsFhsVjslls1ntFptVrtltt1vuFxuVzul1u13vF5vV7vl9v1/wGBwWDwmFw2HxGJxWLxmNx0xiFdyOTh8Tf9ZymXx+QytcyNgz8r0OblWjyWds+m0' + 
	'ka1Vf1ta1+r1mos2xrG2xeZ0+a0W0qOx3GO4NV3WeyvD2XJ5XL5nN51aiw+lfSj0gkUkAEllHanHI5j/cHg8EZf7w8vl8j4f/qfEZeB09/vjLAB30+kZQAP/P5/H6/yN' + 
	'AOAEAwCjMBwFAEDwJBMDwLBYAP2/8Hv8/gAGAD8LQs9w/nhDY/oygIA=');
	with (IUnknown(Columns.Add('Col-1')) as EXTREELib_TLB.Column) do
	begin
		DisplayFilterButton := True;
		FilterList := Integer(EXTREELib_TLB.exShowExclude) Or Integer(EXTREELib_TLB.exShowFocusItem) Or Integer(EXTREELib_TLB.exShowCheckBox) Or Integer(EXTREELib_TLB.exSortItemsAsc);
	end;
	with (IUnknown(Columns.Add('Col-2')) as EXTREELib_TLB.Column) do
	begin
		DisplayFilterButton := True;
		FilterList := Integer(EXTREELib_TLB.exShowExclude) Or Integer(EXTREELib_TLB.exShowFocusItem) Or Integer(EXTREELib_TLB.exShowCheckBox) Or Integer(EXTREELib_TLB.exSortItemsAsc);
	end;
	with (IUnknown(Columns.Add('Check')) as EXTREELib_TLB.Column) do
	begin
		Def[EXTREELib_TLB.exCellHasCheckBox] := OleVariant(True);
		DisplayFilterButton := True;
		DisplayFilterPattern := False;
		FilterType := EXTREELib_TLB.exCheck;
	end;
	with (IUnknown(Columns.Add('Image')) as EXTREELib_TLB.Column) do
	begin
		DisplayFilterButton := True;
		FilterType := EXTREELib_TLB.exImage;
		FilterList := Integer(EXTREELib_TLB.exShowExclude) Or Integer(EXTREELib_TLB.exShowFocusItem) Or Integer(EXTREELib_TLB.exShowCheckBox);
	end;
	with (IUnknown(Columns.Add('Pos')) as EXTREELib_TLB.Column) do
	begin
		AllowSizing := False;
		AllowSort := False;
		Width := 32;
		FormatColumn := '1 apos ``';
		Position := 0;
	end;
	with Items do
	begin
		CellCaption[OleVariant(AddItem('Item A')),OleVariant(1)] := 'Sub-Item A';
		h := AddItem('Item B');
		CellCaption[OleVariant(h),OleVariant(1)] := 'Sub-Item B';
		CellState[OleVariant(h),OleVariant(2)] := 1;
		CellCaption[OleVariant(AddItem('Item C')),OleVariant(1)] := 'Sub-Item C';
	end;
	FilterBarFont := (IUnknown(Font) as stdole_TLB.StdFont);
	Description[EXTREELib_TLB.exFilterBarAnd] := FormatABC('`<fgcolor=808080> ` + value + ` </fgcolor>`',OleVariant(Description[EXTREELib_TLB.exFilterBarAnd]),Null,Null);
	FilterBarCaption := '(( ( allui replace `[<b>` with `<bgcolor=000000><fgcolor=FFFFFF><b> ` replace `</b>]` with ` </b></bgcolor></fgcolor>` replace `' + 
	'[<s>` with `<bgcolor=C0C0C0><fgcolor=FFFFFF> ` replace `</s>]` with ` </fgcolor></bgcolor>` )  + `<r><fgcolor=808080>` + ( match' + 
	'itemcount < 0 ? ( ( len(value) ? `` : `` ) + `<r>` + abs(matchitemcount + 1) + ` result(s)` ) : (`<r><fgcolor=808080>`+ itemcoun' + 
	't + ` item(s)`) )))';
	FilterBarPromptVisible := Integer(EXTREELib_TLB.exFilterBarVisible) Or Integer(EXTREELib_TLB.exFilterBarPromptVisible);
	with Columns.Item[OleVariant(0)] do
	begin
		FilterType := EXTREELib_TLB.exFilter;
		Filter := 'Item A|Item B';
	end;
	Columns.Item[OleVariant(2)].Filter := 1;
	ApplyFilter();
	EndUpdate();
end
664
FilterBarCaption ALLUI Keyword ( sample 1 )

// AddItem event - Occurs after a new Item has been inserted to Items collection.
procedure TForm1.Tree1AddItem(ASender: TObject; Item : HITEM);
begin
	with Tree1 do
	begin
		i := FormatABC('value + 1',Items.ItemToIndex[Item],Null,Null);
		Items.CellImage[OleVariant(Item),OleVariant(3)] := i;
	end
end;

with Tree1 do
begin
	BeginUpdate();
	Images('gBJJgBAIDAAGAAEAAQhYAf8Pf4hh0QihCJo2AEZjQAjEZFEaIEaEEaAIAkcbk0olUrlktl0vmExmUzmk1m03nE5nU7nk9n0/oFBoVDolFo1HpFJpVLplNp1PqFRqVTql' + 
	'Vq1XrFZrVbrldr1fsFhsVjslls1ntFptVrtltt1vuFxuVzul1u13vF5vV7vl9v1/wGBwWDwmFw2HxGJxWLxmNx0xiFdyOTh8Tf9ZymXx+QytcyNgz8r0OblWjyWds+m0' + 
	'ka1Vf1ta1+r1mos2xrG2xeZ0+a0W0qOx3GO4NV3WeyvD2XJ5XL5nN51aiw+lfSj0gkUkAEllHanHI5j/cHg8EZf7w8vl8j4f/qfEZeB09/vjLAB30+kZQAP/P5/H6/yN' + 
	'AOAEAwCjMBwFAEDwJBMDwLBYAP2/8Hv8/gAGAD8LQs9w/nhDY/oygIA=');
	with (IUnknown(Columns.Add('Col-1')) as EXTREELib_TLB.Column) do
	begin
		DisplayFilterButton := True;
		FilterList := Integer(EXTREELib_TLB.exShowExclude) Or Integer(EXTREELib_TLB.exShowFocusItem) Or Integer(EXTREELib_TLB.exShowCheckBox) Or Integer(EXTREELib_TLB.exSortItemsAsc);
	end;
	with (IUnknown(Columns.Add('Col-2')) as EXTREELib_TLB.Column) do
	begin
		DisplayFilterButton := True;
		FilterList := Integer(EXTREELib_TLB.exShowExclude) Or Integer(EXTREELib_TLB.exShowFocusItem) Or Integer(EXTREELib_TLB.exShowCheckBox) Or Integer(EXTREELib_TLB.exSortItemsAsc);
	end;
	with (IUnknown(Columns.Add('Check')) as EXTREELib_TLB.Column) do
	begin
		Def[EXTREELib_TLB.exCellHasCheckBox] := OleVariant(True);
		DisplayFilterButton := True;
		DisplayFilterPattern := False;
		FilterType := EXTREELib_TLB.exCheck;
	end;
	with (IUnknown(Columns.Add('Image')) as EXTREELib_TLB.Column) do
	begin
		DisplayFilterButton := True;
		FilterType := EXTREELib_TLB.exImage;
		FilterList := Integer(EXTREELib_TLB.exShowExclude) Or Integer(EXTREELib_TLB.exShowFocusItem) Or Integer(EXTREELib_TLB.exShowCheckBox);
	end;
	with (IUnknown(Columns.Add('Pos')) as EXTREELib_TLB.Column) do
	begin
		AllowSizing := False;
		AllowSort := False;
		Width := 32;
		FormatColumn := '1 apos ``';
		Position := 0;
	end;
	with Items do
	begin
		CellCaption[OleVariant(AddItem('Item A')),OleVariant(1)] := 'Sub-Item A';
		h := AddItem('Item B');
		CellCaption[OleVariant(h),OleVariant(1)] := 'Sub-Item B';
		CellState[OleVariant(h),OleVariant(2)] := 1;
		CellCaption[OleVariant(AddItem('Item C')),OleVariant(1)] := 'Sub-Item C';
	end;
	FilterBarFont := (IUnknown(Font) as stdole_TLB.StdFont);
	Description[EXTREELib_TLB.exFilterBarAnd] := FormatABC('`<fgcolor=808080> ` + value + ` </fgcolor>`',OleVariant(Description[EXTREELib_TLB.exFilterBarAnd]),Null,Null);
	FilterBarCaption := 'allui';
	FilterBarPromptVisible := Integer(EXTREELib_TLB.exFilterBarVisible) Or Integer(EXTREELib_TLB.exFilterBarPromptVisible);
	with Columns.Item[OleVariant(0)] do
	begin
		FilterType := EXTREELib_TLB.exFilter;
		Filter := 'Item A|Item B';
	end;
	Columns.Item[OleVariant(2)].Filter := 1;
	ApplyFilter();
	EndUpdate();
end
663
FilterBarCaption AVAILABLE Keyword ( sample 2, result )

// AddItem event - Occurs after a new Item has been inserted to Items collection.
procedure TForm1.Tree1AddItem(ASender: TObject; Item : HITEM);
begin
	with Tree1 do
	begin
		i := FormatABC('value + 1',Items.ItemToIndex[Item],Null,Null);
		Items.CellImage[OleVariant(Item),OleVariant(3)] := i;
	end
end;

with Tree1 do
begin
	BeginUpdate();
	Images('gBJJgBAIDAAGAAEAAQhYAf8Pf4hh0QihCJo2AEZjQAjEZFEaIEaEEaAIAkcbk0olUrlktl0vmExmUzmk1m03nE5nU7nk9n0/oFBoVDolFo1HpFJpVLplNp1PqFRqVTql' + 
	'Vq1XrFZrVbrldr1fsFhsVjslls1ntFptVrtltt1vuFxuVzul1u13vF5vV7vl9v1/wGBwWDwmFw2HxGJxWLxmNx0xiFdyOTh8Tf9ZymXx+QytcyNgz8r0OblWjyWds+m0' + 
	'ka1Vf1ta1+r1mos2xrG2xeZ0+a0W0qOx3GO4NV3WeyvD2XJ5XL5nN51aiw+lfSj0gkUkAEllHanHI5j/cHg8EZf7w8vl8j4f/qfEZeB09/vjLAB30+kZQAP/P5/H6/yN' + 
	'AOAEAwCjMBwFAEDwJBMDwLBYAP2/8Hv8/gAGAD8LQs9w/nhDY/oygIA=');
	with (IUnknown(Columns.Add('Col-1')) as EXTREELib_TLB.Column) do
	begin
		DisplayFilterButton := True;
		FilterList := Integer(EXTREELib_TLB.exShowExclude) Or Integer(EXTREELib_TLB.exShowFocusItem) Or Integer(EXTREELib_TLB.exShowCheckBox) Or Integer(EXTREELib_TLB.exSortItemsAsc);
	end;
	with (IUnknown(Columns.Add('Col-2')) as EXTREELib_TLB.Column) do
	begin
		DisplayFilterButton := True;
		FilterList := Integer(EXTREELib_TLB.exShowExclude) Or Integer(EXTREELib_TLB.exShowFocusItem) Or Integer(EXTREELib_TLB.exShowCheckBox) Or Integer(EXTREELib_TLB.exSortItemsAsc);
	end;
	with (IUnknown(Columns.Add('Check')) as EXTREELib_TLB.Column) do
	begin
		Def[EXTREELib_TLB.exCellHasCheckBox] := OleVariant(True);
		DisplayFilterButton := True;
		DisplayFilterPattern := False;
		FilterType := EXTREELib_TLB.exCheck;
	end;
	with (IUnknown(Columns.Add('Image')) as EXTREELib_TLB.Column) do
	begin
		DisplayFilterButton := True;
		FilterType := EXTREELib_TLB.exImage;
		FilterList := Integer(EXTREELib_TLB.exShowExclude) Or Integer(EXTREELib_TLB.exShowFocusItem) Or Integer(EXTREELib_TLB.exShowCheckBox);
	end;
	with (IUnknown(Columns.Add('Pos')) as EXTREELib_TLB.Column) do
	begin
		AllowSizing := False;
		AllowSort := False;
		Width := 32;
		FormatColumn := '1 apos ``';
		Position := 0;
	end;
	with Items do
	begin
		CellCaption[OleVariant(AddItem('Item A')),OleVariant(1)] := 'Sub-Item A';
		h := AddItem('Item B');
		CellCaption[OleVariant(h),OleVariant(1)] := 'Sub-Item B';
		CellState[OleVariant(h),OleVariant(2)] := 1;
		CellCaption[OleVariant(AddItem('Item C')),OleVariant(1)] := 'Sub-Item C';
	end;
	FilterBarFont := (IUnknown(Font) as stdole_TLB.StdFont);
	Description[EXTREELib_TLB.exFilterBarAnd] := FormatABC('`<fgcolor=808080> ` + value + ` </fgcolor>`',OleVariant(Description[EXTREELib_TLB.exFilterBarAnd]),Null,Null);
	FilterBarCaption := '(( ( value replace `[` with `<bgcolor=000000><fgcolor=FFFFFF><b> ` replace `]` with ` </b></bgcolor></fgcolor>` ) + ` ` + ( avai' + 
	'lable replace `[` with `<bgcolor=C0C0C0><fgcolor=FFFFFF><b> ` replace `]` with ` </b></bgcolor></fgcolor>` replace `<s>` with ``' + 
	' replace `</s>` with `` ) + `<fgcolor=808080>` + ( matchitemcount < 0 ? ( ( len(value) ? `` : `` ) + `<r>` + abs(matchitemcount ' + 
	'+ 1) + ` result(s)` ) : (`<r><fgcolor=808080>`+ itemcount + ` item(s)`) )))';
	FilterBarPromptVisible := Integer(EXTREELib_TLB.exFilterBarVisible) Or Integer(EXTREELib_TLB.exFilterBarPromptVisible);
	with Columns.Item[OleVariant(0)] do
	begin
		FilterType := EXTREELib_TLB.exFilter;
		Filter := 'Item A|Item B';
	end;
	Columns.Item[OleVariant(2)].Filter := 1;
	ApplyFilter();
	EndUpdate();
end
662
FilterBarCaption AVAILABLE Keyword ( sample 1 )

// AddItem event - Occurs after a new Item has been inserted to Items collection.
procedure TForm1.Tree1AddItem(ASender: TObject; Item : HITEM);
begin
	with Tree1 do
	begin
		i := FormatABC('value + 1',Items.ItemToIndex[Item],Null,Null);
		Items.CellImage[OleVariant(Item),OleVariant(3)] := i;
	end
end;

with Tree1 do
begin
	BeginUpdate();
	Images('gBJJgBAIDAAGAAEAAQhYAf8Pf4hh0QihCJo2AEZjQAjEZFEaIEaEEaAIAkcbk0olUrlktl0vmExmUzmk1m03nE5nU7nk9n0/oFBoVDolFo1HpFJpVLplNp1PqFRqVTql' + 
	'Vq1XrFZrVbrldr1fsFhsVjslls1ntFptVrtltt1vuFxuVzul1u13vF5vV7vl9v1/wGBwWDwmFw2HxGJxWLxmNx0xiFdyOTh8Tf9ZymXx+QytcyNgz8r0OblWjyWds+m0' + 
	'ka1Vf1ta1+r1mos2xrG2xeZ0+a0W0qOx3GO4NV3WeyvD2XJ5XL5nN51aiw+lfSj0gkUkAEllHanHI5j/cHg8EZf7w8vl8j4f/qfEZeB09/vjLAB30+kZQAP/P5/H6/yN' + 
	'AOAEAwCjMBwFAEDwJBMDwLBYAP2/8Hv8/gAGAD8LQs9w/nhDY/oygIA=');
	with (IUnknown(Columns.Add('Col-1')) as EXTREELib_TLB.Column) do
	begin
		DisplayFilterButton := True;
		FilterList := Integer(EXTREELib_TLB.exShowExclude) Or Integer(EXTREELib_TLB.exShowFocusItem) Or Integer(EXTREELib_TLB.exShowCheckBox) Or Integer(EXTREELib_TLB.exSortItemsAsc);
	end;
	with (IUnknown(Columns.Add('Col-2')) as EXTREELib_TLB.Column) do
	begin
		DisplayFilterButton := True;
		FilterList := Integer(EXTREELib_TLB.exShowExclude) Or Integer(EXTREELib_TLB.exShowFocusItem) Or Integer(EXTREELib_TLB.exShowCheckBox) Or Integer(EXTREELib_TLB.exSortItemsAsc);
	end;
	with (IUnknown(Columns.Add('Check')) as EXTREELib_TLB.Column) do
	begin
		Def[EXTREELib_TLB.exCellHasCheckBox] := OleVariant(True);
		DisplayFilterButton := True;
		DisplayFilterPattern := False;
		FilterType := EXTREELib_TLB.exCheck;
	end;
	with (IUnknown(Columns.Add('Image')) as EXTREELib_TLB.Column) do
	begin
		DisplayFilterButton := True;
		FilterType := EXTREELib_TLB.exImage;
		FilterList := Integer(EXTREELib_TLB.exShowExclude) Or Integer(EXTREELib_TLB.exShowFocusItem) Or Integer(EXTREELib_TLB.exShowCheckBox);
	end;
	with (IUnknown(Columns.Add('Pos')) as EXTREELib_TLB.Column) do
	begin
		AllowSizing := False;
		AllowSort := False;
		Width := 32;
		FormatColumn := '1 apos ``';
		Position := 0;
	end;
	with Items do
	begin
		CellCaption[OleVariant(AddItem('Item A')),OleVariant(1)] := 'Sub-Item A';
		h := AddItem('Item B');
		CellCaption[OleVariant(h),OleVariant(1)] := 'Sub-Item B';
		CellState[OleVariant(h),OleVariant(2)] := 1;
		CellCaption[OleVariant(AddItem('Item C')),OleVariant(1)] := 'Sub-Item C';
	end;
	FilterBarFont := (IUnknown(Font) as stdole_TLB.StdFont);
	Description[EXTREELib_TLB.exFilterBarAnd] := FormatABC('`<fgcolor=808080> ` + value + ` </fgcolor>`',OleVariant(Description[EXTREELib_TLB.exFilterBarAnd]),Null,Null);
	FilterBarCaption := 'value + ` ` + available';
	FilterBarPromptVisible := Integer(EXTREELib_TLB.exFilterBarVisible) Or Integer(EXTREELib_TLB.exFilterBarPromptVisible);
	with Columns.Item[OleVariant(0)] do
	begin
		FilterType := EXTREELib_TLB.exFilter;
		Filter := 'Item A|Item B';
	end;
	Columns.Item[OleVariant(2)].Filter := 1;
	ApplyFilter();
	EndUpdate();
end
661
Is it possible to somehow highlight the column's name different than its filter value in the control's filter bar ( sample 3, results )

with Tree1 do
begin
	BeginUpdate();
	with (IUnknown(Columns.Add('Col-1')) as EXTREELib_TLB.Column) do
	begin
		DisplayFilterButton := True;
		FilterList := Integer(EXTREELib_TLB.exShowExclude) Or Integer(EXTREELib_TLB.exShowFocusItem) Or Integer(EXTREELib_TLB.exShowCheckBox) Or Integer(EXTREELib_TLB.exSortItemsAsc);
	end;
	with (IUnknown(Columns.Add('Col-2')) as EXTREELib_TLB.Column) do
	begin
		DisplayFilterButton := True;
		FilterList := Integer(EXTREELib_TLB.exShowExclude) Or Integer(EXTREELib_TLB.exShowFocusItem) Or Integer(EXTREELib_TLB.exShowCheckBox) Or Integer(EXTREELib_TLB.exSortItemsAsc);
	end;
	with (IUnknown(Columns.Add('Pos')) as EXTREELib_TLB.Column) do
	begin
		AllowSizing := False;
		AllowSort := False;
		Width := 32;
		FormatColumn := '1 apos ``';
		Position := 0;
	end;
	with Items do
	begin
		CellCaption[OleVariant(AddItem('Item A')),OleVariant(1)] := 'Sub-Item A';
		CellCaption[OleVariant(AddItem('Item B')),OleVariant(1)] := 'Sub-Item B';
		CellCaption[OleVariant(AddItem('Item C')),OleVariant(1)] := 'Sub-Item C';
	end;
	FilterBarFont := (IUnknown(Font) as stdole_TLB.StdFont);
	Description[EXTREELib_TLB.exFilterBarAnd] := FormatABC('`<fgcolor=808080>` + value + `</fgcolor>`',OleVariant(Description[EXTREELib_TLB.exFilterBarAnd]),Null,Null);
	FilterBarCaption := '(`<b>` + value + `</b><fgcolor=808080>` + ( matchitemcount < 0 ? ( ( len(value) ? `` : `` ) + `<r>` + abs(matchitemcount + 1) + ' + 
	'` result(s)` ) : (`<fgcolor=808080>`+ itemcount + ` item(s)`) )) replace `[` with `<bgcolor=000000><fgcolor=FFFFFF><b> ` replace' + 
	' `]` with ` </b></bgcolor></fgcolor>`';
	FilterBarPromptVisible := EXTREELib_TLB.exFilterBarToggle;
	with Columns.Item[OleVariant(0)] do
	begin
		FilterType := EXTREELib_TLB.exFilter;
		Filter := 'Item A|Item B';
	end;
	with Columns.Item[OleVariant(1)] do
	begin
		FilterType := EXTREELib_TLB.exPattern;
		Filter := '*B';
	end;
	ApplyFilter();
	EndUpdate();
end
660
Is it possible to somehow highlight the column's name different than its filter value in the control's filter bar ( sample 2 )

with Tree1 do
begin
	BeginUpdate();
	with (IUnknown(Columns.Add('Col-1')) as EXTREELib_TLB.Column) do
	begin
		DisplayFilterButton := True;
		FilterList := Integer(EXTREELib_TLB.exShowExclude) Or Integer(EXTREELib_TLB.exShowFocusItem) Or Integer(EXTREELib_TLB.exShowCheckBox) Or Integer(EXTREELib_TLB.exSortItemsAsc);
	end;
	with (IUnknown(Columns.Add('Col-2')) as EXTREELib_TLB.Column) do
	begin
		DisplayFilterButton := True;
		FilterList := Integer(EXTREELib_TLB.exShowExclude) Or Integer(EXTREELib_TLB.exShowFocusItem) Or Integer(EXTREELib_TLB.exShowCheckBox) Or Integer(EXTREELib_TLB.exSortItemsAsc);
	end;
	with (IUnknown(Columns.Add('Pos')) as EXTREELib_TLB.Column) do
	begin
		AllowSizing := False;
		AllowSort := False;
		Width := 32;
		FormatColumn := '1 apos ``';
		Position := 0;
	end;
	with Items do
	begin
		CellCaption[OleVariant(AddItem('Item A')),OleVariant(1)] := 'Sub-Item A';
		CellCaption[OleVariant(AddItem('Item B')),OleVariant(1)] := 'Sub-Item B';
		CellCaption[OleVariant(AddItem('Item C')),OleVariant(1)] := 'Sub-Item C';
	end;
	FilterBarFont := (IUnknown(Font) as stdole_TLB.StdFont);
	Description[EXTREELib_TLB.exFilterBarAnd] := FormatABC('`<fgcolor=808080>` + value + `</fgcolor>`',OleVariant(Description[EXTREELib_TLB.exFilterBarAnd]),Null,Null);
	FilterBarCaption := 'value replace `[` with `<bgcolor=000000><fgcolor=FFFFFF><b> ` replace `]` with ` </b></bgcolor></fgcolor>`';
	FilterBarPromptVisible := EXTREELib_TLB.exFilterBarToggle;
	with Columns.Item[OleVariant(0)] do
	begin
		FilterType := EXTREELib_TLB.exFilter;
		Filter := 'Item A|Item B';
	end;
	with Columns.Item[OleVariant(1)] do
	begin
		FilterType := EXTREELib_TLB.exPattern;
		Filter := '*B';
	end;
	ApplyFilter();
	EndUpdate();
end
659
Is it possible to somehow highlight the column's name different than its filter value in the control's filter bar ( sample 1 )

with Tree1 do
begin
	BeginUpdate();
	with (IUnknown(Columns.Add('Col-1')) as EXTREELib_TLB.Column) do
	begin
		DisplayFilterButton := True;
		FilterList := Integer(EXTREELib_TLB.exShowExclude) Or Integer(EXTREELib_TLB.exShowFocusItem) Or Integer(EXTREELib_TLB.exShowCheckBox) Or Integer(EXTREELib_TLB.exSortItemsAsc);
	end;
	with (IUnknown(Columns.Add('Col-2')) as EXTREELib_TLB.Column) do
	begin
		DisplayFilterButton := True;
		FilterList := Integer(EXTREELib_TLB.exShowExclude) Or Integer(EXTREELib_TLB.exShowFocusItem) Or Integer(EXTREELib_TLB.exShowCheckBox) Or Integer(EXTREELib_TLB.exSortItemsAsc);
	end;
	with (IUnknown(Columns.Add('Pos')) as EXTREELib_TLB.Column) do
	begin
		AllowSizing := False;
		AllowSort := False;
		Width := 32;
		FormatColumn := '1 apos ``';
		Position := 0;
	end;
	with Items do
	begin
		CellCaption[OleVariant(AddItem('Item A')),OleVariant(1)] := 'Sub-Item A';
		CellCaption[OleVariant(AddItem('Item B')),OleVariant(1)] := 'Sub-Item B';
		CellCaption[OleVariant(AddItem('Item C')),OleVariant(1)] := 'Sub-Item C';
	end;
	Description[EXTREELib_TLB.exFilterBarAnd] := FormatABC('`<fgcolor=808080>` + value + `</fgcolor>`',OleVariant(Description[EXTREELib_TLB.exFilterBarAnd]),Null,Null);
	FilterBarCaption := 'value replace `[` with `<fgcolor=808080>[` replace `]` with `]</fgcolor>`';
	FilterBarPromptVisible := EXTREELib_TLB.exFilterBarToggle;
	with Columns.Item[OleVariant(0)] do
	begin
		FilterType := EXTREELib_TLB.exFilter;
		Filter := 'Item A|Item B';
	end;
	with Columns.Item[OleVariant(1)] do
	begin
		FilterType := EXTREELib_TLB.exPattern;
		Filter := '*B';
	end;
	ApplyFilter();
	EndUpdate();
end
658
Is it possible to automatically displays the control's filter label to the right

with Tree1 do
begin
	BeginUpdate();
	with (IUnknown(Columns.Add('Item')) as EXTREELib_TLB.Column) do
	begin
		DisplayFilterButton := True;
		FilterList := Integer(EXTREELib_TLB.exShowExclude) Or Integer(EXTREELib_TLB.exShowFocusItem) Or Integer(EXTREELib_TLB.exShowCheckBox) Or Integer(EXTREELib_TLB.exSortItemsAsc);
	end;
	with (IUnknown(Columns.Add('Pos')) as EXTREELib_TLB.Column) do
	begin
		AllowSizing := False;
		AllowSort := False;
		Width := 32;
		FormatColumn := '1 apos ``';
		Position := 0;
	end;
	with Items do
	begin
		AddItem('Item A');
		AddItem('Item B');
		AddItem('Item C');
	end;
	FilterBarCaption := '`<r>` + value';
	FilterBarPromptVisible := Integer(EXTREELib_TLB.exFilterBarShowCloseOnRight) Or Integer(EXTREELib_TLB.exFilterBarToggle);
	with Columns.Item[OleVariant(0)] do
	begin
		FilterType := EXTREELib_TLB.exFilter;
		Filter := 'Item B';
	end;
	ApplyFilter();
	EndUpdate();
end
657
How can I get the number of results/items being shown in the control's filter bar (sample 4)

with Tree1 do
begin
	BeginUpdate();
	with (IUnknown(Columns.Add('Item')) as EXTREELib_TLB.Column) do
	begin
		DisplayFilterButton := True;
		FilterList := Integer(EXTREELib_TLB.exShowExclude) Or Integer(EXTREELib_TLB.exShowFocusItem) Or Integer(EXTREELib_TLB.exShowCheckBox) Or Integer(EXTREELib_TLB.exSortItemsAsc);
	end;
	with (IUnknown(Columns.Add('Pos')) as EXTREELib_TLB.Column) do
	begin
		AllowSizing := False;
		AllowSort := False;
		Width := 32;
		FormatColumn := '1 apos ``';
		Position := 0;
	end;
	with Items do
	begin
		AddItem('Item A');
		AddItem('Item B');
		AddItem('Item C');
	end;
	FilterBarFont := (IUnknown(Font) as stdole_TLB.StdFont);
	FilterBarPrompt := FormatABC('`<b>` + value',OleVariant(FilterBarPrompt),Null,Null);
	FilterBarCaption := '`<b><r>` + value + `</b><fgcolor=808080>` + ( matchitemcount < 0 ? ( ( len(value) ? `<br>` : `` ) + `<r>` + abs(matchitemcount +' + 
	' 1) + ` result(s)` ) : (`<fgcolor=808080>`+ itemcount + ` item(s)`) )';
	FilterBarPromptVisible := Integer(EXTREELib_TLB.exFilterBarCompact) Or Integer(EXTREELib_TLB.exFilterBarShowCloseOnRight) Or Integer(EXTREELib_TLB.exFilterBarShowCloseIfRequired) Or Integer(EXTREELib_TLB.exFilterBarCaptionVisible) Or Integer(EXTREELib_TLB.exFilterBarVisible) Or Integer(EXTREELib_TLB.exFilterBarPromptVisible);
	EndUpdate();
end
656
How can I get the number of results being shown in the control's filter bar (sample 3)

with Tree1 do
begin
	BeginUpdate();
	(IUnknown(Columns.Add('Item')) as EXTREELib_TLB.Column).DisplayFilterButton := True;
	with (IUnknown(Columns.Add('Pos')) as EXTREELib_TLB.Column) do
	begin
		AllowSizing := False;
		AllowSort := False;
		Width := 32;
		FormatColumn := '1 apos ``';
		Position := 0;
	end;
	with Items do
	begin
		AddItem('Item A');
		AddItem('Item B');
		AddItem('Item C');
	end;
	FilterBarFont := (IUnknown(Font) as stdole_TLB.StdFont);
	FilterBarCaption := '`<b><r>` + value + `</b><fgcolor=808080>` + ( matchitemcount < 0 ? ( ( len(value) ? `<br>` : `` ) + `<r>` + abs(matchitemcount +' + 
	' 1) + ` result(s)` ) : ``)';
	FilterBarPromptVisible := Integer(EXTREELib_TLB.exFilterBarCompact) Or Integer(EXTREELib_TLB.exFilterBarCaptionVisible) Or Integer(EXTREELib_TLB.exFilterBarVisible) Or Integer(EXTREELib_TLB.exFilterBarPromptVisible);
	with Columns.Item[OleVariant(0)] do
	begin
		FilterType := EXTREELib_TLB.exFilter;
		Filter := 'Item A|Item B';
	end;
	ApplyFilter();
	EndUpdate();
end
655
How can I get the number of results being shown in the control's filter bar (sample 2, compact)

with Tree1 do
begin
	BeginUpdate();
	(IUnknown(Columns.Add('Item')) as EXTREELib_TLB.Column).DisplayFilterButton := True;
	with (IUnknown(Columns.Add('Pos')) as EXTREELib_TLB.Column) do
	begin
		AllowSizing := False;
		AllowSort := False;
		Width := 32;
		FormatColumn := '1 apos ``';
		Position := 0;
	end;
	with Items do
	begin
		AddItem('Item A');
		AddItem('Item B');
		AddItem('Item C');
	end;
	FilterBarFont := (IUnknown(Font) as stdole_TLB.StdFont);
	FilterBarCaption := '`<b><r>` + value + `</b><fgcolor=808080>` + ( matchitemcount < 0 ? `<off -4> ` + abs(matchitemcount + 1) + ` result(s)` : ``)';
	FilterBarPromptVisible := Integer(EXTREELib_TLB.exFilterBarCompact) Or Integer(EXTREELib_TLB.exFilterBarSingleLine) Or Integer(EXTREELib_TLB.exFilterBarCaptionVisible) Or Integer(EXTREELib_TLB.exFilterBarVisible) Or Integer(EXTREELib_TLB.exFilterBarPromptVisible);
	with Columns.Item[OleVariant(0)] do
	begin
		FilterType := EXTREELib_TLB.exFilter;
		Filter := 'Item A|Item B';
	end;
	ApplyFilter();
	EndUpdate();
end
654
How can I get the number of results being shown in the control's filter bar (sample 1)

with Tree1 do
begin
	BeginUpdate();
	(IUnknown(Columns.Add('Item')) as EXTREELib_TLB.Column).DisplayFilterButton := True;
	with (IUnknown(Columns.Add('Pos')) as EXTREELib_TLB.Column) do
	begin
		AllowSizing := False;
		AllowSort := False;
		Width := 32;
		FormatColumn := '1 apos ``';
		Position := 0;
	end;
	with Items do
	begin
		AddItem('Item A');
		AddItem('Item B');
		AddItem('Item C');
	end;
	FilterBarFont := (IUnknown(Font) as stdole_TLB.StdFont);
	FilterBarCaption := '`<b>` + value + `</b><r><fgcolor=808080>` + ( matchitemcount < 0 ? abs(matchitemcount + 1) + ` result(s)` : ``)';
	FilterBarPromptVisible := Integer(EXTREELib_TLB.exFilterBarCaptionVisible) Or Integer(EXTREELib_TLB.exFilterBarVisible) Or Integer(EXTREELib_TLB.exFilterBarPromptVisible);
	with Columns.Item[OleVariant(0)] do
	begin
		FilterType := EXTREELib_TLB.exFilter;
		Filter := 'Item A|Item B';
	end;
	ApplyFilter();
	EndUpdate();
end
653
FilterBarCaption Predefined Keywords

// AfterExpandItem event - Fired after an item is expanded (collapsed).
procedure TForm1.Tree1AfterExpandItem(ASender: TObject; Item : HITEM);
begin
	with Tree1 do
	begin
		Refresh();
	end
end;

with Tree1 do
begin
	BeginUpdate();
	LinesAtRoot := EXTREELib_TLB.exLinesAtRoot;
	(IUnknown(Columns.Add('Item')) as EXTREELib_TLB.Column).DisplayFilterButton := True;
	with (IUnknown(Columns.Add('Check')) as EXTREELib_TLB.Column) do
	begin
		Def[EXTREELib_TLB.exCellHasCheckBox] := OleVariant(True);
		DisplayFilterButton := True;
		DisplayFilterPattern := False;
		FilterType := EXTREELib_TLB.exCheck;
	end;
	with (IUnknown(Columns.Add('Pos')) as EXTREELib_TLB.Column) do
	begin
		AllowSizing := False;
		AllowSort := False;
		Width := 32;
		FormatColumn := '1 apos ``';
		Position := 0;
	end;
	with Items do
	begin
		AddItem('Item A');
		h := AddItem('Item B');
		CellState[OleVariant(InsertItem(h,Null,'Sub-Item B1')),OleVariant(1)] := 1;
		InsertItem(h,Null,'Sub-Item B2');
		ExpandItem[h] := True;
		AddItem('Item C');
	end;
	FilterInclude := EXTREELib_TLB.exItemsWithChilds;
	FilterBarFont := (IUnknown(Font) as stdole_TLB.StdFont);
	FilterBarCaption := '`<fgcolor=0000FF><i>value/current</i></fgcolor>: <fgcolor=808080>` + value + `</fgcolor>` + `<br><fgcolor=0000FF><i>available</i' + 
	'></fgcolor>: ` + available + `<br><fgcolor=0000FF><i>allui</i></fgcolor>: ` + allui + `<br><fgcolor=0000FF><i>all</i></fgcolor>:' + 
	' ` + all + `<br><fgcolor=0000FF><i>itemcount</i></fgcolor>: <fgcolor=808080>` + itemcount + `</fgcolor>`+ `<br><fgcolor=0000FF><' + 
	'i>visibleitemcount</i></fgcolor>: <fgcolor=808080>` + visibleitemcount + `</fgcolor>`+ `<br><fgcolor=0000FF><i>matchitemcount</i' + 
	'></fgcolor>: <fgcolor=808080>` + matchitemcount + `</fgcolor>`+ `<br><fgcolor=0000FF><i>promptpattern</i></fgcolor>: <fgcolor=80' + 
	'8080>` + promptpattern + `</fgcolor>`+ `<br><fgcolor=0000FF><i>leafitemcount</i></fgcolor>: <fgcolor=808080>` + leafitemcount + ' + 
	'`</fgcolor>`';
	FilterBarPromptPattern := 'B';
	FilterBarPromptVisible := Integer(EXTREELib_TLB.exFilterBarCaptionVisible) Or Integer(EXTREELib_TLB.exFilterBarVisible) Or Integer(EXTREELib_TLB.exFilterBarPromptVisible);
	with Columns.Item[OleVariant(0)] do
	begin
		FilterType := EXTREELib_TLB.exFilter;
		Filter := 'Item A|Item B';
	end;
	ApplyFilter();
	EndUpdate();
end
652
I am using filter prompt feature, and also column's filter, just wondering if possible to compact displaying the filter bar so it won't show on multiple lines

with Tree1 do
begin
	BeginUpdate();
	(IUnknown(Columns.Add('Item')) as EXTREELib_TLB.Column).DisplayFilterButton := True;
	with (IUnknown(Columns.Add('Pos')) as EXTREELib_TLB.Column) do
	begin
		AllowSizing := False;
		AllowSort := False;
		Width := 32;
		FormatColumn := '1 apos ``';
		Position := 0;
	end;
	with Items do
	begin
		AddItem('Item A');
		AddItem('Item B');
		AddItem('Item C');
	end;
	FilterBarFont := (IUnknown(Font) as stdole_TLB.StdFont);
	FilterBarCaption := '`<r><i><fgcolor=808080><upline><solidline><sha ;;0>` + value';
	FilterBarPromptPattern := 'B';
	FilterBarPromptVisible := Integer(EXTREELib_TLB.exFilterBarCompact) Or Integer(EXTREELib_TLB.exFilterBarSingleLine) Or Integer(EXTREELib_TLB.exFilterBarVisible) Or Integer(EXTREELib_TLB.exFilterBarPromptVisible);
	with Columns.Item[OleVariant(0)] do
	begin
		FilterType := EXTREELib_TLB.exFilter;
		Filter := 'Item A|Item B';
	end;
	ApplyFilter();
	EndUpdate();
end
651
Just wondering if it is possible to show the filter bar's close button on the right ( sample 2 )

with Tree1 do
begin
	BeginUpdate();
	(IUnknown(Columns.Add('Item')) as EXTREELib_TLB.Column).DisplayFilterButton := True;
	with (IUnknown(Columns.Add('Pos')) as EXTREELib_TLB.Column) do
	begin
		AllowSizing := False;
		AllowSort := False;
		Width := 32;
		FormatColumn := '1 apos ``';
		Position := 0;
	end;
	with Items do
	begin
		AddItem('Item A');
		AddItem('Item B');
		AddItem('Item C');
	end;
	FilterBarPromptVisible := Integer(EXTREELib_TLB.exFilterBarShowCloseOnRight) Or Integer(EXTREELib_TLB.exFilterBarToggle) Or Integer(EXTREELib_TLB.exFilterBarPromptVisible);
	FilterBarPrompt := FormatABC('`<r>` + value',OleVariant(FilterBarPrompt),Null,Null);
	EndUpdate();
end
650
Just wondering if it is possible to show the filter bar's close button on the right ( sample 1 )

with Tree1 do
begin
	BeginUpdate();
	RightToLeft := True;
	(IUnknown(Columns.Add('Item')) as EXTREELib_TLB.Column).DisplayFilterButton := True;
	with (IUnknown(Columns.Add('Pos')) as EXTREELib_TLB.Column) do
	begin
		AllowSizing := False;
		AllowSort := False;
		Width := 32;
		FormatColumn := '1 apos ``';
		Position := 0;
	end;
	with Items do
	begin
		AddItem('Item A');
		AddItem('Item B');
		AddItem('Item C');
	end;
	FilterBarPromptVisible := Integer(EXTREELib_TLB.exFilterBarToggle) Or Integer(EXTREELib_TLB.exFilterBarPromptVisible);
	EndUpdate();
end
649
How can I change the visual appearance of the filter bar's close button (EBN)

with Tree1 do
begin
	BeginUpdate();
	with VisualAppearance do
	begin
		Add(1,'gBFLBCJwBAEHhEJAAEhABHQDg6AADACAxRDgMQBQKAAzAJBIYhiG4cYCgMZhXDOCYXABCEYRXBIZQ7BKNIxjSJ5BhIAAyDSJMjSRJUEhqGCWYDleYYYAKHIMQLOg7IJj' + 
	'yI4/SJAYCydKAWhxIaZKJHCZoEDaTAADCNVAQp6MEIJVbVEI0e79OgBLp/Z7kECIJJAaRjHQdJxGLA8EhtCQhCZteK6SgMKJYXhWQYRXI1JwvMBrWrdQjiOYELQtMKmS' + 
	'ZNLYGG4dR5SVJbcYhSYsRRFMoyDIOXYDLKsdYqSpXIThObEGgaPqJYjsUjCMKnR7HVIURrBPC9TBPE69ZgmC6ucKPX51ShKFaBWDZcwFAS+UBuYCAILiEAQGZ1XT8ORO' + 
	'icbgJgSTJRlCaZeDsHY7QGR4xkSYp3CaExZAQMgalQYAwjCAAfBANxcA2TgKAUOpDCGFhKg0RpXCwCwDHQHQHEyAIkCkOhbFOGA8A8DohBgRg9AccZcn8EpEjMLI2C2D' + 
	'YxAgQgvAIUIVkoAAPBQDJlECTZ3CCYwDACQwUA8A5MCAWAWDiQi4l8aQOEgLJuBgBgDmYFAzEoIoIl0WALgKYJbBABADAAHgHg8VAMmqCQQDMXABAATYwTmNwBDATJXA' + 
	'iAgjHmNQ5lgQ5QEQEQMmcWg/GwD5ylyNw2gMcJcjsBgBgOQQDDhRpVAMMwnDBFw1B0Ax8D0DxOmmJJIGQTY5hGMAwkwM4CAYLZAmAOJnAqAojiIGg6iieYkmeAYOHaKJ' + 
	'DCyCwjH6AoggsQpQliAJLhgaJ0CESBTnyDwjk+cg4g4P5IHIHJ+BWRRzlYWAxiOUxihsY4KjKLJRGqC44FCegkkkM58iAKAPnIWIWD8SRSFSfQnkmewUhYP4GiGKJ7G0' + 
	'TIbCSUoggqUo0lAQ4LnEcBcD8Coiiif4nE+eAAn2HpOkcFJqi4T5SkyMw/kqQown8IBIBOdA+A+DJrBqVxXEqYo4lCApLhGHBnD8S4ymyfxmg+cwQkQP5egOUZIWoEAk' + 
	'jIeIPBMBJBD+TBjBifwvkuc58hQJQPmFrYykkchclSApKjGOBuD+TRDFCfw3mmIxNi8FxFlOXhVC4aYDFyPgvg2YBcBcLZGCGCJ0DSLRzGSWQ/lmY5+mEP5gmMDBZRSM' + 
	'RsFsOxMhMJJ/DsTpTnwaQaE+N5ojuNhdEYNI5C4TZJO1GRDmCaxnA2Yx4n8IpIjOTBQBQC5TgyYw7gUYRYikC0BYRwsDQBoB8eA6Q2hsE0BUXgywZtYCyHMKwnxSAhAQ' + 
	'HkIQhRrBaDsCwA4ERiB2EWAIYIXhhiVEgAEUYwwYjyASLge4FhHgRDkM8OQih0jWPkGgBBAQ');
	end;
	(IUnknown(Columns.Add('Item')) as EXTREELib_TLB.Column).DisplayFilterButton := True;
	with (IUnknown(Columns.Add('Pos')) as EXTREELib_TLB.Column) do
	begin
		AllowSizing := False;
		AllowSort := False;
		Width := 32;
		FormatColumn := '1 apos ``';
		Position := 0;
	end;
	with Items do
	begin
		AddItem('Item A');
		AddItem('Item B');
		AddItem('Item C');
	end;
	FilterBarPromptVisible := Integer(EXTREELib_TLB.exFilterBarToggle) Or Integer(EXTREELib_TLB.exFilterBarPromptVisible);
	Background[EXTREELib_TLB.exFooterFilterBarButton] := $1000000;
	EndUpdate();
end
648
How can I change the visual appearance of the filter bar's close button (solid)

with Tree1 do
begin
	BeginUpdate();
	(IUnknown(Columns.Add('Item')) as EXTREELib_TLB.Column).DisplayFilterButton := True;
	with (IUnknown(Columns.Add('Pos')) as EXTREELib_TLB.Column) do
	begin
		AllowSizing := False;
		AllowSort := False;
		Width := 32;
		FormatColumn := '1 apos ``';
		Position := 0;
	end;
	with Items do
	begin
		AddItem('Item A');
		AddItem('Item B');
		AddItem('Item C');
	end;
	FilterBarPromptVisible := EXTREELib_TLB.exFilterBarPromptVisible;
	Background[EXTREELib_TLB.exFooterFilterBarButton] := $ff;
	EndUpdate();
end
647
Is it possible to prevent definitely showing the filter bar's close button

with Tree1 do
begin
	BeginUpdate();
	(IUnknown(Columns.Add('Item')) as EXTREELib_TLB.Column).DisplayFilterButton := True;
	with (IUnknown(Columns.Add('Pos')) as EXTREELib_TLB.Column) do
	begin
		AllowSizing := False;
		AllowSort := False;
		Width := 32;
		FormatColumn := '1 apos ``';
		Position := 0;
	end;
	with Items do
	begin
		AddItem('Item A');
		AddItem('Item B');
		AddItem('Item C');
	end;
	FilterBarPromptVisible := EXTREELib_TLB.exFilterBarPromptVisible;
	Background[EXTREELib_TLB.exFooterFilterBarButton] := $ffffffff;
	EndUpdate();
end
646
Is it possible to show the close button only if there is a filter applied

with Tree1 do
begin
	BeginUpdate();
	(IUnknown(Columns.Add('Item')) as EXTREELib_TLB.Column).DisplayFilterButton := True;
	with (IUnknown(Columns.Add('Pos')) as EXTREELib_TLB.Column) do
	begin
		AllowSizing := False;
		AllowSort := False;
		Width := 32;
		FormatColumn := '1 apos ``';
		Position := 0;
	end;
	with Items do
	begin
		AddItem('Item A');
		AddItem('Item B');
		AddItem('Item C');
	end;
	FilterBarPromptVisible := Integer(EXTREELib_TLB.exFilterBarShowCloseIfRequired) Or Integer(EXTREELib_TLB.exFilterBarPromptVisible);
	EndUpdate();
end
645
The control's filter bar is not closed once I click the close button (toggle)

with Tree1 do
begin
	BeginUpdate();
	(IUnknown(Columns.Add('Item')) as EXTREELib_TLB.Column).DisplayFilterButton := True;
	with (IUnknown(Columns.Add('Pos')) as EXTREELib_TLB.Column) do
	begin
		AllowSizing := False;
		AllowSort := False;
		Width := 32;
		FormatColumn := '1 apos ``';
		Position := 0;
	end;
	with Items do
	begin
		AddItem('Item A');
		AddItem('Item B');
		AddItem('Item C');
		LockedItemCount[EXTREELib_TLB.BottomAlignment] := 1;
		h := LockedItem[EXTREELib_TLB.BottomAlignment,0];
		ItemDivider[h] := 0;
		CellCaption[OleVariant(h),OleVariant(0)] := '<c><fgcolor=808080>Press the CTRL + F to turn on/off the control''s filter bar. ALT + Up/Down moves the focus.';
		CellCaptionFormat[OleVariant(h),OleVariant(0)] := EXTREELib_TLB.exHTML;
	end;
	FilterBarCaption := '`<r><fgcolor=808080>` + value';
	FilterBarPromptPattern := 'B';
	FilterBarPromptVisible := Integer(EXTREELib_TLB.exFilterBarCompact) Or Integer(EXTREELib_TLB.exFilterBarToggle) Or Integer(EXTREELib_TLB.exFilterBarSingleLine) Or Integer(EXTREELib_TLB.exFilterBarVisible) Or Integer(EXTREELib_TLB.exFilterBarPromptVisible);
	with Columns.Item[OleVariant(0)] do
	begin
		FilterType := EXTREELib_TLB.exFilter;
		Filter := 'Item B';
	end;
	ApplyFilter();
	EndUpdate();
end
644
How can I display the control's filter on a single line

with Tree1 do
begin
	BeginUpdate();
	(IUnknown(Columns.Add('Item')) as EXTREELib_TLB.Column).DisplayFilterButton := True;
	with (IUnknown(Columns.Add('Pos')) as EXTREELib_TLB.Column) do
	begin
		AllowSizing := False;
		AllowSort := False;
		Width := 32;
		FormatColumn := '1 apos ``';
		Position := 0;
	end;
	with Items do
	begin
		AddItem('Item A');
		AddItem('Item B');
		AddItem('Item C');
	end;
	FilterBarCaption := 'len(value) ? `filter for: <fgcolor 808080>` + value  : `<fgcolor 808080>no filter`';
	FilterBarPromptVisible := Integer(EXTREELib_TLB.exFilterBarSingleLine) Or Integer(EXTREELib_TLB.exFilterBarVisible);
	with Columns.Item[OleVariant(0)] do
	begin
		FilterType := EXTREELib_TLB.exFilter;
		Filter := 'Item A|Item B';
	end;
	ApplyFilter();
	EndUpdate();
end
643
How can I display the control's filter on a single line (prompt-combined)

with Tree1 do
begin
	BeginUpdate();
	(IUnknown(Columns.Add('Item')) as EXTREELib_TLB.Column).DisplayFilterButton := True;
	with (IUnknown(Columns.Add('Pos')) as EXTREELib_TLB.Column) do
	begin
		AllowSizing := False;
		AllowSort := False;
		Width := 32;
		FormatColumn := '1 apos ``';
		Position := 0;
	end;
	with Items do
	begin
		AddItem('Item A');
		AddItem('Item B');
		AddItem('Item C');
	end;
	FilterBarCaption := '`<r>` + value';
	FilterBarPromptVisible := Integer(EXTREELib_TLB.exFilterBarCompact) Or Integer(EXTREELib_TLB.exFilterBarSingleLine) Or Integer(EXTREELib_TLB.exFilterBarVisible) Or Integer(EXTREELib_TLB.exFilterBarPromptVisible);
	with Columns.Item[OleVariant(0)] do
	begin
		FilterType := EXTREELib_TLB.exFilter;
		Filter := 'Item A|Item B';
	end;
	ApplyFilter();
	EndUpdate();
end
642
How can I get the number of results after a filter is applied

// Click event - Occurs when the user presses and then releases the left mouse button over the tree control.
procedure TForm1.Tree1Click(ASender: TObject; );
begin
	with Tree1 do
	begin
		ClearFilter();
	end
end;

// FilterChange event - Notifies your application that the filter is changed.
procedure TForm1.Tree1FilterChange(ASender: TObject; );
begin
	with Tree1 do
	begin
		OutputDebugString( 'Items.MatchItemCount' );
		OutputDebugString( Items.MatchItemCount );
		OutputDebugString( FormatABC('value < 0 ? `filter applied: ` + abs(value + 1) + ` result(s)` : `no filter`',Items.MatchItemCount,Null,Null) );
	end
end;

with Tree1 do
begin
	BeginUpdate();
	(IUnknown(Columns.Add('Item')) as EXTREELib_TLB.Column).DisplayFilterButton := True;
	with (IUnknown(Columns.Add('Pos')) as EXTREELib_TLB.Column) do
	begin
		AllowSizing := False;
		AllowSort := False;
		Width := 32;
		FormatColumn := '1 apos ``';
		Position := 0;
	end;
	with Items do
	begin
		AddItem('Item A');
		AddItem('Item B');
		AddItem('Item C');
	end;
	FilterBarPromptVisible := EXTREELib_TLB.exFilterBarPromptVisible;
	FilterBarPromptPattern := 'Item';
	EndUpdate();
end
641
How can I programmatically clear the control's filter

// Click event - Occurs when the user presses and then releases the left mouse button over the tree control.
procedure TForm1.Tree1Click(ASender: TObject; );
begin
	with Tree1 do
	begin
		ClearFilter();
	end
end;

with Tree1 do
begin
	BeginUpdate();
	(IUnknown(Columns.Add('Item')) as EXTREELib_TLB.Column).DisplayFilterButton := True;
	with (IUnknown(Columns.Add('Pos')) as EXTREELib_TLB.Column) do
	begin
		AllowSizing := False;
		AllowSort := False;
		Width := 32;
		FormatColumn := '1 apos ``';
		Position := 0;
	end;
	with Items do
	begin
		AddItem('Item A');
		AddItem('Item B');
		AddItem('Item C');
	end;
	FilterBarPromptVisible := EXTREELib_TLB.exFilterBarPromptVisible;
	FilterBarPromptPattern := 'B';
	EndUpdate();
end
640
Is it possible to prevent closing the control's filter bar, so it is always shown (prompt-combined)

with Tree1 do
begin
	BeginUpdate();
	(IUnknown(Columns.Add('Item')) as EXTREELib_TLB.Column).DisplayFilterButton := True;
	with (IUnknown(Columns.Add('Pos')) as EXTREELib_TLB.Column) do
	begin
		AllowSizing := False;
		AllowSort := False;
		Width := 32;
		FormatColumn := '1 apos ``';
		Position := 0;
	end;
	with Items do
	begin
		AddItem('Item A');
		AddItem('Item B');
		AddItem('Item C');
	end;
	FilterBarPromptPattern := 'B';
	FilterBarPromptVisible := Integer(EXTREELib_TLB.exFilterBarVisible) Or Integer(EXTREELib_TLB.exFilterBarPromptVisible);
	with Columns.Item[OleVariant(0)] do
	begin
		FilterType := EXTREELib_TLB.exFilter;
		Filter := 'Item B';
	end;
	ApplyFilter();
	EndUpdate();
end
639
Is it possible to prevent closing the control's filter bar, so it is always shown (prompt)

with Tree1 do
begin
	BeginUpdate();
	(IUnknown(Columns.Add('Item')) as EXTREELib_TLB.Column).DisplayFilterButton := True;
	with (IUnknown(Columns.Add('Pos')) as EXTREELib_TLB.Column) do
	begin
		AllowSizing := False;
		AllowSort := False;
		Width := 32;
		FormatColumn := '1 apos ``';
		Position := 0;
	end;
	with Items do
	begin
		AddItem('Item A');
		AddItem('Item B');
		AddItem('Item C');
	end;
	FilterBarPromptVisible := EXTREELib_TLB.exFilterBarPromptVisible;
	FilterBarPromptPattern := 'B';
	EndUpdate();
end
638
Is it possible to prevent closing the control's filter bar, so it is always shown

with Tree1 do
begin
	BeginUpdate();
	(IUnknown(Columns.Add('Item')) as EXTREELib_TLB.Column).DisplayFilterButton := True;
	with (IUnknown(Columns.Add('Pos')) as EXTREELib_TLB.Column) do
	begin
		AllowSizing := False;
		AllowSort := False;
		Width := 32;
		FormatColumn := '1 apos ``';
		Position := 0;
	end;
	with Items do
	begin
		AddItem('Item A');
		AddItem('Item B');
		AddItem('Item C');
	end;
	FilterBarCaption := 'len(value) = 0 ? `<fgcolor=808080>no filter` : value';
	FilterBarPromptVisible := EXTREELib_TLB.exFilterBarVisible;
	with Columns.Item[OleVariant(0)] do
	begin
		FilterType := EXTREELib_TLB.exFilter;
		Filter := 'Item B';
	end;
	ApplyFilter();
	EndUpdate();
end
637
How can I change the visual appearance of the +/- buttons, open/close glyphs as current visual theme (method 4)

with Tree1 do
begin
	BeginUpdate();
	LinesAtRoot := EXTREELib_TLB.exLinesAtRoot;
	VisualDesign := 'gBFLBWIgBAEHhEJAEGg6VAkHeLpgwChAOhULB8XAUUg8MAAREEHGMcgRCJ0ei8dhABDEcQAAYAQGKIYBkAKBQAGaAoDDMOQwQwAAxjGKEEwsACEIrjKCRShyCYZRhGcT' + 
	'SBCIZBqEqSZLiEZRQiiCYsS5GQBRWAkEwiBiEQTjea5CgOIAFS7LIqjRQEBxhIaZYIGaiQADENo9TxIMZAfBIHShK6NJABCCSQKkYx0HScRijDIEFwGIQmbKiej4DCiC' + 
	'QQW7OYYRVCNMQSfa8HivJyrcamfp/YBgOBYHb1eLVPR5LwfPCGUw1P6PLxkORZHimK4tSLHV7xVpMIwZFafIQhCCoHomS5NU7UNR0TQUFx9FaGX7rDDsGwLAJ6XRgF4b' + 
	'g2VpnHePpenAN4bH2GwHFmApSjEGBLnWOpRGOTBZHOegrE6BxPiWVJqCweQrn0LgJAWJBjwgaw1gKO5HmWch5h+fovF+G5bmich4BgfZkB8dynRUVYqiUR5rnmex/F6N' + 
	'4tn2AJfnebZ3DEXw3HWXgzAyIwgicKJKBKEIhCeCgiHyHYFEmSAFmqBghFIdgSCeIJygYDAyAgJx6AoIINAMOJNCgCZCGoGoLmMCI+CwJoihMNglCCIhzFCUg0EmMhgh' + 
	'WDBkAiQg9CUY4jEYN4Jk2IxklYJoJHIUg+CSZJSESFwkkkGI+FOFIJEIRhPhMCRJCSVoRrSBhiDgTZjHYT4PEkYhwhgJYm0SaIaiaSYuE+GQNlmCIBGCJxjhiZQ5AkMh' + 
	'Ag6ExJCkPhPguaAiFYUAlAkKZ0g6HoOEmWR/GHcA4m0OwIlIJIHCRgQshGJhpjoaocieaZiC6GAimkUgehIOwnGYGYIGkah6jaE4rg6SpCjKK5rEOMYlGIGIihKOgglo' + 
	'Foqj6L5aGaBo6CkGIkAQjiPpCAAaJILCTJQlKPACDaXJgmSaJsnCdJ4nygKEoijKQpSmKcqCpKoqysK0rivLAsSyLMtC1LYty4Lkui7LwvS+L8wDBMIwzEMUxjHMgyTK' + 
	'MszDNM4zzQNE0jTNQ1TWNc2DZNo2zcN03jfOA4TiOM5DlOY5zoOk6jrOw7TuO88DxPI8z0PU9j3Pg+T6Ps/D9P4/0AQFAkDQRBUGQdCEJQpC0MQ1DkPRBEUSRNFEVBhF' + 
	'kXRhGQ9D6Dxfh+W5gGGd4QH2XQjCmDpFFaKoVB+D5Xmed5+H8YAHnIAh9EwV5Fl0d4MkMKJICmSgygSJAoEmMUCIPgnDCCIOQFYCxJjwFoCcA4kxoF+AIJkAgExegDEg' + 
	'EYQInAzCUAIOEGgfxiiRDYF1Q4EQ2BSCaEQYwbAiKREMpRSymFNDIAkAxT6oVRgSA2qdVKq1WqvVirMZQUhSCnBUMoIgoQRgnGSIQUgkg1hIHYAkAYMROAmHiLsE4xxS' + 
	'CxBwEwCQ0wmDdBsE0GYXBtg2CSPMFIuwYiQBYBQeAcwOCnBCCZgw0g0glBONAQgqQThCGgPQGoBQfiRGmOEZIPAXjsBoPAO4HRThhA0EQSA5BAgaCKJIGg3QdhOCmNUB' + 
	'oQAijTCIF0FwQxpCHDIPAYYMQGgtCmFcaQtRAjZCyFYSojQ2B2BoKwIYFApBXEIBsIQ1QsAWAWEwaA1xCgjAoIAQBAQ=';
	Columns.Add('Column');
	with Items do
	begin
		h := AddItem('Root 1');
		InsertItem(h,Null,'Child 1');
		InsertItem(h,Null,'Child 2');
		ExpandItem[h] := True;
		h := AddItem('Root 2');
		InsertItem(h,Null,'Child');
	end;
	EndUpdate();
end
636
How can I change the visual appearance of the +/- buttons, open/close glyphs as current visual theme (method 3)

with Tree1 do
begin
	BeginUpdate();
	with VisualAppearance do
	begin
		Add(3,'gBFLBCJwBAEHhEJAAEhABDwCg6AADACAxRDgMQBQKAAzAJBIYhiG4cYCgMZhXDOCYXABCEYRXBIZQ7BKNIxjSJ5BhIAAyDSJMjSRJUEhqGCWYDleYYYAKHIMQLJQKQSB' + 
	'cQR9EaBZBAWTpQC0OJDTJRI4TNAgbSYAAYRqoCb6loTKypaxjCQQIgkUBpGKdBynEYsDwSGyJCCJWyIbpKAwoVbcs4AYhuJpaQi+d5PFbjVT8dLAMBwLA8EwXAJ+OpfD' + 
	'xXU7eFKpR5fchXTI8UxXFqXZhkeQrfh7KYVRBKdBQRBEFQPJqnahqOpaXo2RoLUJKcQwHTmHYNQTALyuTALZrWeZ3XrgN74LbtZzVQauYRpbCMEr6bpoWLnFi6Ho1U4l' + 
	'lWah1jqSweFqfxPgQQRphi+Yak0YIuqUfJegef4zluaJ3nqPJeCYH4BAeX5TDLBpVGqKRRnwf4flefZtHsX54BYAR/F+EwVnUd5eAMMJKDIChygyIQpAoEh4iIJ5JlgX' + 
	'IcgCXpIGoFwnGEQh6BEKBgmMIICHgIJCAiUAzgyUoAhwJohkiRgygwYpiGoKwzGIcgKCkNQNCMRIbCYCRYk4QoMiOchWDwNBjhiJJaDYTRiGiFwlCQAhOE8JBJHITIRg' + 
	'wZRZFCFCZBkOIUhKTRpCWAwgGYQ4El4NxlBifIWCcCYCFoaoMGaKYyG6GxlBmGJdhkCAWBIeA5g4U4QhMJAImkPIShRVxGgQJRlCIUISh+SJpnCZIeBgFgiHgO4OlOMI' + 
	'NCISByECDQikkGhuh2JwpmqBogCKaYiC6FwhmkQ4yHgYgYiaHopiuaRakCbIsisSpGjYOwaHYKYMCkK5CA2IxrCwCwFigaJrkLTI6lcdANAEgIA=');
		Add(1,'CP:3 -2 -2 2 2');
		Add(4,'gBFLBCJwBAEHhEJAAEhABEICg6AADACAxRDgMQBQKAAzAJBIYhiG4cYCgMZhXDOCYXABCEYRXBIZQ7BKNIxjSJ5BhIAAyDSJMjSRJUEhqGCWYDleYYYAKHIMQLJQKQSB' + 
	'cQR9EaBZBAWTpQC0OJDTJRI4TNAgbSYAAYRqoCb6loTKypaxjCQQIgkUBpGKdBynEYsDwSGyJCCJWyIbpKAwoVbcs4AYhuJpaQi+d5PFbjVT8dLAMBwLA8EwXAJ+OpfD' + 
	'xXU7eFKpR5fchXTI8UxXFqXZhkeQrfh7KYVRBKdBQRBEFQPJqnahqOpaXo2RoLUJKcQwHTmHYNQTALyuTALZrWeZ3XrgN74LbtZzVQauYRpbCMEr6bpoWLnFi6Ho1U4l' + 
	'lWah1jqSweFqfxPgQQRphi+Yak0YIuqUfJeg8X4rluaZ3niGB+AQHx/EyShjjEVYqiUR5rnmex/GAB5+AIf4gEeXJFHyXZ3gCTAygyAociMKBKEKBIeCiCZyHYFAnCEe' + 
	'Bkh+BghFgRIegOCgYCySAgh4CAkgINAMmMNIgCcCYjn4LoLmMCJGDKC5ijIagoDMYhCAoJg1A0IxEhsJgJFiThChCY5yFYPA0GOGIYloNhNGIaIXCUJACE4TwkEkchOF' + 
	'SFYlFkXhUCUCQZEYTglCSMxaEkYJIBmFJhDeDZZEYPwlgmQhghaGqVDoa4bGaeY6FGGZNlmFIBGEJ4jhiZQ5AkMhAg6E5JCkRoGCUSQ6B6CYiSCBIOh+DhJmmARiWQOJ' + 
	'tDsCJSCSBwkXSLIRicaZ6HqIIomoIguhwIpphIHoWDsJ4mCGChpmqOpGheLIOkqUo2iya4DjGJxihiQoSj4IJaDaMpCjCWoGg6PgpBiQ4tHcQJQBAgI=');
		Add(2,'CP:4 -2 -2 2 2');
	end;
	LinesAtRoot := EXTREELib_TLB.exGroupLinesAtRoot;
	HasButtons := EXTREELib_TLB.exCustom;
	HasButtonsCustom[False] := 16777216;
	HasButtonsCustom[True] := 33554432;
	Columns.Add('Column');
	with Items do
	begin
		h := AddItem('Root 1');
		InsertItem(h,Null,'Child 1');
		InsertItem(h,Null,'Child 2');
		ExpandItem[h] := True;
		h := AddItem('Root 2');
		InsertItem(h,Null,'Child');
	end;
	EndUpdate();
end
635
How can I change the visual appearance of the +/- buttons, open/close glyphs as current visual theme (method 2)

with Tree1 do
begin
	BeginUpdate();
	with VisualAppearance do
	begin
		Add(1,'XP:TREEVIEW 2 1');
		Add(2,'XP:TREEVIEW 2 2');
	end;
	Background[EXTREELib_TLB.exTreeGlyphOpen] := $1000000;
	Background[EXTREELib_TLB.exTreeGlyphClose] := $2000000;
	LinesAtRoot := EXTREELib_TLB.exLinesAtRoot;
	Columns.Add('Column');
	with Items do
	begin
		h := AddItem('Root 1');
		InsertItem(h,Null,'Child 1');
		InsertItem(h,Null,'Child 2');
		ExpandItem[h] := True;
		h := AddItem('Root 2');
		InsertItem(h,Null,'Child');
	end;
	EndUpdate();
end
634
How can I find if the control is running in DPI mode
with Tree1 do
begin
	OutputDebugString( FormatABC('dpi = 1 ? `normal/stretch mode` : `dpi mode`',Null,Null,Null) );
end
633
How can I change the visual appearance of the +/- buttons (method 1)

with Tree1 do
begin
	BeginUpdate();
	with VisualAppearance do
	begin
		Add(1,'gBFLBCJwBAEHhEJAAEhABDwCg6AADACAxRDgMQBQKAAzAJBIYhiG4cYCgMZhXDOCYXABCEYRXBIZQ7BKNIxjSJ5BhIAAyDSJMjSRJUEhqGCWYDleYYYAKHIMQLJQKQSB' + 
	'cQR9EaBZBAWTpQC0OJDTJRI4TNAgbSYAAYRqoCb6loTKypaxjCQQIgkUBpGKdBynEYsDwSGyJCCJWyIbpKAwoVbcs4AYhuJpaQi+d5PFbjVT8dLAMBwLA8EwXAJ+OpfD' + 
	'xXU7eFKpR5fchXTI8UxXFqXZhkeQrfh7KYVRBKdBQRBEFQPJqnahqOpaXo2RoLUJKcQwHTmHYNQTALyuTALZrWeZ3XrgN74LbtZzVQauYRpbCMEr6bpoWLnFi6Ho1U4l' + 
	'lWah1jqSweFqfxPgQQRphi+Yak0YIuqUfJegef4zluaJ3nqPJeCYH4BAeX5TDLBpVGqKRRnwf4flefZtHsX54BYAR/F+EwVnUd5eAMMJKDIChygyIQpAoEh4iIJ5JlgX' + 
	'IcgCXpIGoFwnGEQh6BEKBgmMIICHgIJCAiUAzgyUoAhwJohkiRgygwYpiGoKwzGIcgKCkNQNCMRIbCYCRYk4QoMiOchWDwNBjhiJJaDYTRiGiFwlCQAhOE8JBJHITIRg' + 
	'wZRZFCFCZBkOIUhKTRpCWAwgGYQ4El4NxlBifIWCcCYCFoaoMGaKYyG6GxlBmGJdhkCAWBIeA5g4U4QhMJAImkPIShRVxGgQJRlCIUISh+SJpnCZIeBgFgiHgO4OlOMI' + 
	'NCISByECDQikkGhuh2JwpmqBogCKaYiC6FwhmkQ4yHgYgYiaHopiuaRakCbIsisSpGjYOwaHYKYMCkK5CA2IxrCwCwFigaJrkLTI6lcdANAEgIA=');
		Add(2,'gBFLBCJwBAEHhEJAAEhABEICg6AADACAxRDgMQBQKAAzAJBIYhiG4cYCgMZhXDOCYXABCEYRXBIZQ7BKNIxjSJ5BhIAAyDSJMjSRJUEhqGCWYDleYYYAKHIMQLJQKQSB' + 
	'cQR9EaBZBAWTpQC0OJDTJRI4TNAgbSYAAYRqoCb6loTKypaxjCQQIgkUBpGKdBynEYsDwSGyJCCJWyIbpKAwoVbcs4AYhuJpaQi+d5PFbjVT8dLAMBwLA8EwXAJ+OpfD' + 
	'xXU7eFKpR5fchXTI8UxXFqXZhkeQrfh7KYVRBKdBQRBEFQPJqnahqOpaXo2RoLUJKcQwHTmHYNQTALyuTALZrWeZ3XrgN74LbtZzVQauYRpbCMEr6bpoWLnFi6Ho1U4l' + 
	'lWah1jqSweFqfxPgQQRphi+Yak0YIuqUfJeg8X4rluaZ3niGB+AQHx/EyShjjEVYqiUR5rnmex/GAB5+AIf4gEeXJFHyXZ3gCTAygyAociMKBKEKBIeCiCZyHYFAnCEe' + 
	'Bkh+BghFgRIegOCgYCySAgh4CAkgINAMmMNIgCcCYjn4LoLmMCJGDKC5ijIagoDMYhCAoJg1A0IxEhsJgJFiThChCY5yFYPA0GOGIYloNhNGIaIXCUJACE4TwkEkchOF' + 
	'SFYlFkXhUCUCQZEYTglCSMxaEkYJIBmFJhDeDZZEYPwlgmQhghaGqVDoa4bGaeY6FGGZNlmFIBGEJ4jhiZQ5AkMhAg6E5JCkRoGCUSQ6B6CYiSCBIOh+DhJmmARiWQOJ' + 
	'tDsCJSCSBwkXSLIRicaZ6HqIIomoIguhwIpphIHoWDsJ4mCGChpmqOpGheLIOkqUo2iya4DjGJxihiQoSj4IJaDaMpCjCWoGg6PgpBiQ4tHcQJQBAgI=');
	end;
	LinesAtRoot := EXTREELib_TLB.exLinesAtRoot;
	Background[EXTREELib_TLB.exTreeGlyphOpen] := $1000000;
	Background[EXTREELib_TLB.exTreeGlyphClose] := $2000000;
	Columns.Add('Column');
	with Items do
	begin
		h := AddItem('Root 1');
		InsertItem(h,Null,'Child 1');
		InsertItem(h,Null,'Child 2');
		ExpandItem[h] := True;
		h := AddItem('Root 2');
		InsertItem(h,Null,'Child');
	end;
	EndUpdate();
end
632
I am using single selection, the question is if possible to select an item only when the user releases the mouse, as currently it selects the item as soon as the user clicks it
// SelectionChanged event - Fired after a new item has been selected.
procedure TForm1.Tree1SelectionChanged(ASender: TObject; );
begin
	with Tree1 do
	begin
		OutputDebugString( 'SelectionChanged' );
	end
end;

with Tree1 do
begin
	BeginUpdate();
	FreezeEvents(True);
	SingleSel := True;
	SelectOnRelease := True;
	(IUnknown(Columns.Add('Column')) as EXTREELib_TLB.Column).FormatColumn := '1 apos `A-Z`';
	with Items do
	begin
		AddItem('');
		SelectItem[AddItem('')] := True;
		AddItem('');
	end;
	FreezeEvents(False);
	EndUpdate();
end
631
Is it possible to select nothing
// SelectionChanged event - Fired after a new item has been selected.
procedure TForm1.Tree1SelectionChanged(ASender: TObject; );
begin
	with Tree1 do
	begin
		OutputDebugString( 'SelectionChanged' );
	end
end;

with Tree1 do
begin
	BeginUpdate();
	FreezeEvents(True);
	AllowSelectNothing := True;
	(IUnknown(Columns.Add('Column')) as EXTREELib_TLB.Column).FormatColumn := '1 apos `A-Z`';
	with Items do
	begin
		AddItem('');
		SelectItem[AddItem('')] := True;
		AddItem('');
	end;
	FreezeEvents(False);
	EndUpdate();
end
630
How can I specify the color for control's selection when it loses the focus

with Tree1 do
begin
	BeginUpdate();
	with (IUnknown(Columns.Add('')) as EXTREELib_TLB.Column) do
	begin
		AllowSizing := False;
		AllowDragging := False;
		AllowSort := False;
		Width := 24;
		Def[EXTREELib_TLB.exCellHasButton] := OleVariant(True);
	end;
	(IUnknown(Columns.Add('Column')) as EXTREELib_TLB.Column).FormatColumn := '1 apos `A-Z`';
	with Items do
	begin
		AddItem('');
		SelectItem[AddItem('')] := True;
		AddItem('');
	end;
	Background[EXTREELib_TLB.exSelBackColorHide] := $c4c4c4;
	Background[EXTREELib_TLB.exSelForeColorHide] := $10000;
	EndUpdate();
end
629
How can I change the background color for checked items (EBN color, frame)

// CellStateChanged event - Fired after cell's state has been changed.
procedure TForm1.Tree1CellStateChanged(ASender: TObject; Item : HITEM;ColIndex : Integer);
begin
	with Tree1 do
	begin
		Refresh();
	end
end;

with Tree1 do
begin
	BeginUpdate();
	LinesAtRoot := EXTREELib_TLB.exLinesAtRoot;
	SelBackMode := EXTREELib_TLB.exTransparent;
	DefaultItemHeight := 22;
	with (IUnknown(Columns.Add('Tasks')) as EXTREELib_TLB.Column) do
	begin
		Def[EXTREELib_TLB.exCellHasCheckBox] := OleVariant(True);
		PartialCheck := True;
	end;
	with VisualAppearance do
	begin
		Add(2,'gBFLBCJwBAEHhEJAAEhABUkIQAAYAQGKIcBiAKBQAGYBIJDEMQ3DjAUBjMK4ZwTC4AIQjCK4JDKHYJRpHEZgLBMJAAGIZYhhUYRUiYMkiJBGGDIDiGGI2SJAcbTVIEcx' + 
	'9EyUJSgSTJOjCMokTTIU4TTLYASbJafJJhWSaAiyMouDIOMg1BDNIw/Hika6jOgKUisNJXRzWIBTbDlOQ3JqnbCjOQRSrQBoNDAMAiiaKlbwJPK9RoieQXfwUAJrXJcF' + 
	'qXFSLVxNBKAQEBA=');
		Add(1,'CP:2 1 1 -1 -1');
	end;
	with ConditionalFormats.Add('%CS0 = 1',Null) do
	begin
		BackColor := $1000000;
	end;
	HeaderVisible := True;
	with Items do
	begin
		h := AddItem('Project');
		hChild := InsertItem(h,Null,'Task 1');
		SelectItem[hChild] := True;
		hChild := InsertItem(h,Null,'Task 2');
		CellState[OleVariant(hChild),OleVariant(0)] := 1;
		hChild := InsertItem(h,Null,'Task 3');
		CellState[OleVariant(hChild),OleVariant(0)] := 1;
		ExpandItem[h] := True;
	end;
	EndUpdate();
end
628
How can I change the caption of the checked items (sample 2)

with Tree1 do
begin
	BeginUpdate();
	LinesAtRoot := EXTREELib_TLB.exLinesAtRoot;
	with (IUnknown(Columns.Add('Tasks')) as EXTREELib_TLB.Column) do
	begin
		Def[EXTREELib_TLB.exCellHasCheckBox] := OleVariant(True);
		PartialCheck := True;
		Def[EXTREELib_TLB.exCellCaptionFormat] := OleVariant(1);
		FormatColumn := '%CS0 = 1 ? `<bgcolor=000000><fgcolor=FFFFFF> ` + value + ` </fgcolor></bgcolor>` : value';
	end;
	HeaderVisible := True;
	with Items do
	begin
		h := AddItem('Project');
		hChild := InsertItem(h,Null,'Task 1');
		SelectItem[hChild] := True;
		hChild := InsertItem(h,Null,'Task 2');
		CellState[OleVariant(hChild),OleVariant(0)] := 1;
		hChild := InsertItem(h,Null,'Task 3');
		CellState[OleVariant(hChild),OleVariant(0)] := 1;
		ExpandItem[h] := True;
	end;
	EndUpdate();
end
627
How can I change the caption of the checked items (sample 1)

with Tree1 do
begin
	BeginUpdate();
	LinesAtRoot := EXTREELib_TLB.exLinesAtRoot;
	with (IUnknown(Columns.Add('Tasks')) as EXTREELib_TLB.Column) do
	begin
		Def[EXTREELib_TLB.exCellHasCheckBox] := OleVariant(True);
		PartialCheck := True;
		Def[EXTREELib_TLB.exCellCaptionFormat] := OleVariant(1);
		FormatColumn := 'value + (%CS0 = 1 ? `<r><fgcolor=808080>(checked)` : ``)';
	end;
	HeaderVisible := True;
	with Items do
	begin
		h := AddItem('Project');
		hChild := InsertItem(h,Null,'Task 1');
		SelectItem[hChild] := True;
		hChild := InsertItem(h,Null,'Task 2');
		CellState[OleVariant(hChild),OleVariant(0)] := 1;
		hChild := InsertItem(h,Null,'Task 3');
		CellState[OleVariant(hChild),OleVariant(0)] := 1;
		ExpandItem[h] := True;
	end;
	EndUpdate();
end
626
How can I change the font for the checked items

// CellStateChanged event - Fired after cell's state has been changed.
procedure TForm1.Tree1CellStateChanged(ASender: TObject; Item : HITEM;ColIndex : Integer);
begin
	with Tree1 do
	begin
		Refresh();
	end
end;

with Tree1 do
begin
	BeginUpdate();
	LinesAtRoot := EXTREELib_TLB.exLinesAtRoot;
	DefaultItemHeight := 22;
	with (IUnknown(Columns.Add('Tasks')) as EXTREELib_TLB.Column) do
	begin
		Def[EXTREELib_TLB.exCellHasCheckBox] := OleVariant(True);
		PartialCheck := True;
	end;
	with ConditionalFormats.Add('%CS0 = 1',Null) do
	begin
		f := (IUnknown(ComObj.CreateComObject(ComObj.ProgIDToClassID('StdFont'))) as stdole_TLB.StdFont);
		with f do
		begin
			Name := Tree1.Font.Name;
			Size := 12;
		end;
		Font := (IUnknown(f) as stdole_TLB.StdFont);
	end;
	HeaderVisible := True;
	with Items do
	begin
		h := AddItem('Project');
		hChild := InsertItem(h,Null,'Task 1');
		SelectItem[hChild] := True;
		hChild := InsertItem(h,Null,'Task 2');
		CellState[OleVariant(hChild),OleVariant(0)] := 1;
		hChild := InsertItem(h,Null,'Task 3');
		CellState[OleVariant(hChild),OleVariant(0)] := 1;
		ExpandItem[h] := True;
	end;
	EndUpdate();
end
625
How can I bold the checked items

// CellStateChanged event - Fired after cell's state has been changed.
procedure TForm1.Tree1CellStateChanged(ASender: TObject; Item : HITEM;ColIndex : Integer);
begin
	with Tree1 do
	begin
		Refresh();
	end
end;

with Tree1 do
begin
	BeginUpdate();
	LinesAtRoot := EXTREELib_TLB.exLinesAtRoot;
	with (IUnknown(Columns.Add('Tasks')) as EXTREELib_TLB.Column) do
	begin
		Def[EXTREELib_TLB.exCellHasCheckBox] := OleVariant(True);
		PartialCheck := True;
	end;
	with ConditionalFormats.Add('%CS0 = 1',Null) do
	begin
		Bold := True;
	end;
	HeaderVisible := True;
	with Items do
	begin
		h := AddItem('Project');
		hChild := InsertItem(h,Null,'Task 1');
		SelectItem[hChild] := True;
		hChild := InsertItem(h,Null,'Task 2');
		CellState[OleVariant(hChild),OleVariant(0)] := 1;
		hChild := InsertItem(h,Null,'Task 3');
		CellState[OleVariant(hChild),OleVariant(0)] := 1;
		ExpandItem[h] := True;
	end;
	EndUpdate();
end
624
How can I change the foreground color for checked items

// CellStateChanged event - Fired after cell's state has been changed.
procedure TForm1.Tree1CellStateChanged(ASender: TObject; Item : HITEM;ColIndex : Integer);
begin
	with Tree1 do
	begin
		Refresh();
	end
end;

with Tree1 do
begin
	BeginUpdate();
	LinesAtRoot := EXTREELib_TLB.exLinesAtRoot;
	SelBackMode := EXTREELib_TLB.exTransparent;
	with (IUnknown(Columns.Add('Tasks')) as EXTREELib_TLB.Column) do
	begin
		Def[EXTREELib_TLB.exCellHasCheckBox] := OleVariant(True);
		PartialCheck := True;
	end;
	with ConditionalFormats.Add('%CS0 = 1',Null) do
	begin
		ForeColor := $8080ff;
	end;
	HeaderVisible := True;
	with Items do
	begin
		h := AddItem('Project');
		hChild := InsertItem(h,Null,'Task 1');
		SelectItem[hChild] := True;
		hChild := InsertItem(h,Null,'Task 2');
		CellState[OleVariant(hChild),OleVariant(0)] := 1;
		hChild := InsertItem(h,Null,'Task 3');
		CellState[OleVariant(hChild),OleVariant(0)] := 1;
		ExpandItem[h] := True;
	end;
	EndUpdate();
end
623
How can I change the background color for checked items (solid color)

// CellStateChanged event - Fired after cell's state has been changed.
procedure TForm1.Tree1CellStateChanged(ASender: TObject; Item : HITEM;ColIndex : Integer);
begin
	with Tree1 do
	begin
		Refresh();
	end
end;

with Tree1 do
begin
	BeginUpdate();
	LinesAtRoot := EXTREELib_TLB.exLinesAtRoot;
	SelBackMode := EXTREELib_TLB.exTransparent;
	with (IUnknown(Columns.Add('Tasks')) as EXTREELib_TLB.Column) do
	begin
		Def[EXTREELib_TLB.exCellHasCheckBox] := OleVariant(True);
		PartialCheck := True;
	end;
	with ConditionalFormats.Add('%CS0 = 1',Null) do
	begin
		BackColor := $8080ff;
	end;
	HeaderVisible := True;
	with Items do
	begin
		h := AddItem('Project');
		hChild := InsertItem(h,Null,'Task 1');
		SelectItem[hChild] := True;
		hChild := InsertItem(h,Null,'Task 2');
		CellState[OleVariant(hChild),OleVariant(0)] := 1;
		hChild := InsertItem(h,Null,'Task 3');
		CellState[OleVariant(hChild),OleVariant(0)] := 1;
		ExpandItem[h] := True;
	end;
	EndUpdate();
end
622
How can I export the cell's state as well

with Tree1 do
begin
	BeginUpdate();
	with Columns do
	begin
		(IUnknown(Add('C1')) as EXTREELib_TLB.Column).Def[EXTREELib_TLB.exCellHasCheckBox] := OleVariant(True);
		(IUnknown(Add('C2')) as EXTREELib_TLB.Column).FormatColumn := '1 index `A-Z`';
		(IUnknown(Add('C3')) as EXTREELib_TLB.Column).FormatColumn := '100 index ``';
	end;
	with Items do
	begin
		AddItem('Item 1');
		CellState[OleVariant(AddItem('Item 2')),Null] := 1;
		CellState[OleVariant(AddItem('Item 3')),Null] := 1;
	end;
	EndUpdate();
	OutputDebugString( 'Export CSV Items including Check-State:' );
	BeginUpdate();
	with (IUnknown(Columns.Add('Check')) as EXTREELib_TLB.Column) do
	begin
		Position := 0;
		FormatColumn := '%CS0';
	end;
	OutputDebugString( Export('',Null) );
	Columns.Remove('Check');
	EndUpdate();
end
621
The BeforeExpandItem event is fired when clicking the drop down filter button. What we can do to prevent that (method 2)
// BeforeExpandItem event - Fired before an item is about to be expanded (collapsed).
procedure TForm1.Tree1BeforeExpandItem(ASender: TObject; Item : HITEM;var Cancel : OleVariant);
begin
	with Tree1 do
	begin
		OutputDebugString( 'BeforeExpandItem' );
		OutputDebugString( Item );
		OutputDebugString( 'ColumnFromPoint' );
		OutputDebugString( ColumnFromPoint[-1,-1] );
		OutputDebugString( 'ColumnFromPoint return -1, if the user clicks the +/- glitch, else it returns the index of the column where the click occurs.' );
		Items.InsertItem(Item,Null,'new child');
	end
end;

with Tree1 do
begin
	BeginUpdate();
	LinesAtRoot := EXTREELib_TLB.exLinesAtRoot;
	with Columns do
	begin
		(IUnknown(Add('Items')) as EXTREELib_TLB.Column).DisplayFilterButton := True;
	end;
	with Items do
	begin
		ItemHasChildren[InsertItem(Null,Null,'Group 1')] := True;
		ItemHasChildren[InsertItem(Null,Null,'Group 2')] := True;
	end;
	EndUpdate();
end
620
The BeforeExpandItem event is fired when clicking the drop down filter button. What we can do to prevent that (method 1)
// BeforeExpandItem event - Fired before an item is about to be expanded (collapsed).
procedure TForm1.Tree1BeforeExpandItem(ASender: TObject; Item : HITEM;var Cancel : OleVariant);
begin
	with Tree1 do
	begin
		OutputDebugString( 'BeforeExpandItem' );
		OutputDebugString( Item );
		Items.InsertItem(Item,Null,'new child');
	end
end;

with Tree1 do
begin
	BeginUpdate();
	LinesAtRoot := EXTREELib_TLB.exLinesAtRoot;
	with Columns do
	begin
		with (IUnknown(Add('Items')) as EXTREELib_TLB.Column) do
		begin
			DisplayFilterButton := True;
			FilterList := EXTREELib_TLB.exRootItems;
		end;
	end;
	with Items do
	begin
		ItemHasChildren[InsertItem(Null,Null,'Group 1')] := True;
		ItemHasChildren[InsertItem(Null,Null,'Group 2')] := True;
	end;
	EndUpdate();
end
619
How do I change the drop down filter icon/button (black)

with Tree1 do
begin
	BeginUpdate();
	with VisualAppearance do
	begin
		Add(1,'gBFLBCJwBAEHhEJAAEhABXUIQAAYAQGKIcBiAKBQAGYBIJDEMgzDDAUBjKKocQTC4AIQjCK4JDKHYJRpHEZyCA8EhqGASRAFUQBYiWE4oSpLABQaK0ZwIGyRIrkGQgQg' + 
	'mPYDSDNU4zVIEEglBI0TDNczhNDENgtGYaJqHIYpZBcM40TKkEZoSIITZcRrOEBiRL1S0RBhGcRUHZlWzdN64LhuK47UrWdD/XhdVzXRbjfz1Oq+bxve48Br7A5yYThd' + 
	'r4LhOFQ3RjIL4xbIcUwGe6VZhjOLZXjmO49T69HTtOCYBEBA');
	end;
	Background[EXTREELib_TLB.exCursorHoverColumn] := $ffffffff;
	Background[EXTREELib_TLB.exHeaderFilterBarButton] := $1000000;
	Background[EXTREELib_TLB.exBackColorFilter] := $10000;
	Background[EXTREELib_TLB.exForeColorFilter] := $ffffff;
	Description[EXTREELib_TLB.exFilterBarExclude] := '<bgcolor 0><fgcolor ffffff> Exclude </fgcolor></bgcolor>';
	HeaderAppearance := EXTREELib_TLB.None2;
	BackColorHeader := RGB(0,0,0);
	ForeColorHeader := RGB(255,255,255);
	HeaderVisible := True;
	BackColorLevelHeader := BackColor;
	with (IUnknown(Columns.Add('Filter')) as EXTREELib_TLB.Column) do
	begin
		FilterList := Integer(EXTREELib_TLB.exShowExclude) Or Integer(EXTREELib_TLB.exShowCheckBox);
		DisplayFilterButton := True;
		AllowSort := False;
		AllowDragging := False;
	end;
	with Items do
	begin
		AddItem('One');
		AddItem('Two');
		AddItem('Three');
	end;
	EndUpdate();
end
618
How do I change the drop down filter icon/button (white)

with Tree1 do
begin
	BeginUpdate();
	with VisualAppearance do
	begin
		Add(2,'gBFLBCJwBAEHhEJAAEhABX8GACAADACAxSDEMQBQKAAzQFAYbhgHCGAAGQaBUgmFgAQhFcZQSKUOQTDKNYykCIRSDUJYkSZEIyjBI8ExXFqNACkGKwYgmNYiTLAcgANJ' + 
	'0WBaGIZJ4gOT5fDKMoEDRRYADFCscwxJybQAqGQKKb+VgAVY/cTyBIAEQSKA0TDOQ5TSKWB4JPZQRBEbZMNBtBIUJquKaqShdQJCU5FdY3Xblez9P7AMBwLFEC4NQ8YN' + 
	'YuPhjR4dRTIMhvVAsUArFh8Zg9GZZFjmDIDT4ydBLTQwcyVIKnP5qOa6XbmPoCQDYKxZHYxPzVDa3axuL76dqCAT7XrXNy1TbNRrzQKfcJqfCbdw2YaDZLOOT3fjuI4h' + 
	'hKaRzFAHJ+jYQ4xHuY4gHuGIXGeExqC8Tp6C+PoEm+G5ImycRgh0XwvDGa5rgOeoejyXwnFeQp2mkf5ClgBB9gCWIYAwfYAEKV58mkdwOggNArgOXY2EWLoDkKOA0mgb' + 
	'hOGgZApgaSBIHWSYHSmbApgYThmESZYJkIeIkgeCpfliLIHgpMIcmUYYYmODAlg2SI4mWfRfGOEguDcCRjFYAJihCQhJBSDoRmONgKEcI4kFCEJhhOVYTmYnAlEAQhWB' + 
	'MJYJGYWoWmWSR2F6F5lnkWAQhUAgpEieRWEuSYkjWGpmkmNhuhuZwJkYcocmaaYkjyEhngnUA6lEFAlAEgI=');
		Add(1,'CP:2 -14 -4 -2 4');
	end;
	Background[EXTREELib_TLB.exHeaderFilterBarButton] := $1000000;
	Background[EXTREELib_TLB.exCursorHoverColumn] := BackColor;
	HeaderAppearance := EXTREELib_TLB.None2;
	BackColorHeader := RGB(255,255,255);
	HeaderVisible := True;
	HeaderHeight := 24;
	BackColorLevelHeader := BackColor;
	with (IUnknown(Columns.Add('Filter')) as EXTREELib_TLB.Column) do
	begin
		DisplayFilterButton := True;
		AllowSort := False;
		AllowDragging := False;
	end;
	EndUpdate();
end
617
Do you have any Fit-To-Page options when printing the control (W x T, Fit-To )

with Tree1 do
begin
	BeginUpdate();
	ColumnAutoResize := False;
	ContinueColumnScroll := False;
	rs := (IUnknown(ComObj.CreateComObject(ComObj.ProgIDToClassID('ADOR.Recordset'))) as ADODB_TLB.Recordset);
	with rs do
	begin
		Open('Orders','Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Program Files\Exontrol\ExTree\Sample\Access\sample.accdb',3,3,Null);
	end;
	DataSource := (IUnknown(rs) as ADODB_TLB.Recordset);
	EndUpdate();
	with (IUnknown(ComObj.CreateComObject(ComObj.ProgIDToClassID('Exontrol.Print'))) as EXPRINTLib_TLB.Print) do
	begin
		Options := 'FitToPage =2 x 1';
		PrintExt := (IUnknown(Tree1.DefaultInterface) as EXTREELib_TLB.Tree);
		Preview();
	end;
end
616
Do you have any Fit-To-Page options when printing the control ( x T, Fit-To Tall )

with Tree1 do
begin
	BeginUpdate();
	ColumnAutoResize := False;
	ContinueColumnScroll := False;
	rs := (IUnknown(ComObj.CreateComObject(ComObj.ProgIDToClassID('ADOR.Recordset'))) as ADODB_TLB.Recordset);
	with rs do
	begin
		Open('Orders','Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Program Files\Exontrol\ExTree\Sample\Access\sample.accdb',3,3,Null);
	end;
	DataSource := (IUnknown(rs) as ADODB_TLB.Recordset);
	EndUpdate();
	with (IUnknown(ComObj.CreateComObject(ComObj.ProgIDToClassID('Exontrol.Print'))) as EXPRINTLib_TLB.Print) do
	begin
		Options := 'FitToPage = x 2';
		PrintExt := (IUnknown(Tree1.DefaultInterface) as EXTREELib_TLB.Tree);
		Preview();
	end;
end
615
Do you have any Fit-To-Page options when printing the control ( W x, Fit-To Wide )

with Tree1 do
begin
	BeginUpdate();
	ColumnAutoResize := False;
	ContinueColumnScroll := False;
	rs := (IUnknown(ComObj.CreateComObject(ComObj.ProgIDToClassID('ADOR.Recordset'))) as ADODB_TLB.Recordset);
	with rs do
	begin
		Open('Orders','Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Program Files\Exontrol\ExTree\Sample\Access\sample.accdb',3,3,Null);
	end;
	DataSource := (IUnknown(rs) as ADODB_TLB.Recordset);
	EndUpdate();
	with (IUnknown(ComObj.CreateComObject(ComObj.ProgIDToClassID('Exontrol.Print'))) as EXPRINTLib_TLB.Print) do
	begin
		Options := 'FitToPage = 2 x';
		PrintExt := (IUnknown(Tree1.DefaultInterface) as EXTREELib_TLB.Tree);
		Preview();
	end;
end
614
Do you have any Fit-To-Page options when printing the control ( percent view, Adjust-To )

with Tree1 do
begin
	BeginUpdate();
	ColumnAutoResize := False;
	ContinueColumnScroll := False;
	rs := (IUnknown(ComObj.CreateComObject(ComObj.ProgIDToClassID('ADOR.Recordset'))) as ADODB_TLB.Recordset);
	with rs do
	begin
		Open('Orders','Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Program Files\Exontrol\ExTree\Sample\Access\sample.accdb',3,3,Null);
	end;
	DataSource := (IUnknown(rs) as ADODB_TLB.Recordset);
	EndUpdate();
	with (IUnknown(ComObj.CreateComObject(ComObj.ProgIDToClassID('Exontrol.Print'))) as EXPRINTLib_TLB.Print) do
	begin
		Options := 'FitToPage = 50%';
		PrintExt := (IUnknown(Tree1.DefaultInterface) as EXTREELib_TLB.Tree);
		Preview();
	end;
end
613
How do I prevent changing the cell's state ( check-box state )
// CellStateChanging event - Fired before cell's state is about to be changed.
procedure TForm1.Tree1CellStateChanging(ASender: TObject; Item : HITEM;ColIndex : Integer;var NewState : Integer);
begin
	with Tree1 do
	begin
		with Items do
		begin
			NewState := CellState[OleVariant(Item),OleVariant(ColIndex)];
		end;
	end
end;

with Tree1 do
begin
	BeginUpdate();
	LinesAtRoot := EXTREELib_TLB.exLinesAtRoot;
	with (IUnknown(Columns.Add('P1')) as EXTREELib_TLB.Column) do
	begin
		Def[EXTREELib_TLB.exCellHasCheckBox] := OleVariant(True);
		PartialCheck := True;
	end;
	with (IUnknown(Columns.Add('P2')) as EXTREELib_TLB.Column) do
	begin
		Def[EXTREELib_TLB.exCellHasCheckBox] := OleVariant(True);
		PartialCheck := True;
	end;
	with Items do
	begin
		h := AddItem('Root');
		InsertItem(h,Null,'Child 1');
		InsertItem(h,Null,'Child 2');
		ExpandItem[h] := True;
	end;
	EndUpdate();
end
612
How can I use the CellState with ConditionalFormat/ComputedField/FormatColumn

// CellStateChanged event - Fired after cell's state has been changed.
procedure TForm1.Tree1CellStateChanged(ASender: TObject; Item : HITEM;ColIndex : Integer);
begin
end;

with Tree1 do
begin
	BeginUpdate();
	LinesAtRoot := EXTREELib_TLB.exGroupLinesInsideLeaf;
	SelBackMode := EXTREELib_TLB.exTransparent;
	with (IUnknown(Columns.Add('Items')) as EXTREELib_TLB.Column) do
	begin
		Def[EXTREELib_TLB.exCellHasCheckBox] := OleVariant(True);
		PartialCheck := True;
	end;
	with (IUnknown(Columns.Add('Format')) as EXTREELib_TLB.Column) do
	begin
		FormatColumn := '%CS0';
		Caption := FormatColumn;
		Def[EXTREELib_TLB.exCellForeColor] := OleVariant(8421504);
		Def[EXTREELib_TLB.exHeaderForeColor] := Def[EXTREELib_TLB.exCellForeColor];
	end;
	with Items do
	begin
		h := AddItem('Root');
		InsertItem(h,Null,'Item 1');
		CellState[OleVariant(InsertItem(h,Null,'Item 2')),OleVariant(0)] := 1;
		CellState[OleVariant(InsertItem(h,Null,'Item 3')),OleVariant(0)] := 1;
		ExpandItem[h] := True;
	end;
	EndUpdate();
end
611
How can I use the CellData with ConditionalFormat/ComputedField/FormatColumn

with Tree1 do
begin
	BeginUpdate();
	Columns.Add('Items');
	with (IUnknown(Columns.Add('Format')) as EXTREELib_TLB.Column) do
	begin
		FormatColumn := '%CD0';
		Caption := FormatColumn;
		Def[EXTREELib_TLB.exCellForeColor] := OleVariant(8421504);
		Def[EXTREELib_TLB.exHeaderForeColor] := Def[EXTREELib_TLB.exCellForeColor];
	end;
	with Items do
	begin
		CellData[OleVariant(AddItem('Item 1')),OleVariant(0)] := OleVariant(1234);
		CellData[OleVariant(AddItem('Item 2')),OleVariant(0)] := 'this is just an user data';
		CellData[OleVariant(AddItem('Item 3')),OleVariant(0)] := '1/1/2001';
	end;
	EndUpdate();
end
610
How can I use the CellCaption with ConditionalFormat/ComputedField/FormatColumn

with Tree1 do
begin
	BeginUpdate();
	Columns.Add('Items');
	with (IUnknown(Columns.Add('Format')) as EXTREELib_TLB.Column) do
	begin
		FormatColumn := '%0';
		Caption := FormatColumn;
		Def[EXTREELib_TLB.exCellForeColor] := OleVariant(8421504);
		Def[EXTREELib_TLB.exHeaderForeColor] := Def[EXTREELib_TLB.exCellForeColor];
		Width := 96;
		AllowSizing := False;
	end;
	with (IUnknown(Columns.Add('Format')) as EXTREELib_TLB.Column) do
	begin
		FormatColumn := '%C0';
		Caption := FormatColumn;
		Def[EXTREELib_TLB.exCellForeColor] := OleVariant(8421504);
		Def[EXTREELib_TLB.exHeaderForeColor] := Def[EXTREELib_TLB.exCellForeColor];
		Width := 96;
		AllowSizing := False;
	end;
	with Items do
	begin
		AddItem(OleVariant(1));
		h := AddItem(OleVariant(0));
		CellCaption[OleVariant(h),OleVariant(0)] := '<b>HTML</b> Text';
		CellCaptionFormat[OleVariant(h),OleVariant(0)] := EXTREELib_TLB.exHTML;
		AddItem(OleVariant(2));
	end;
	EndUpdate();
end
609
Can I display the radio-button with a solid color

with Tree1 do
begin
	BeginUpdate();
	RadioImage[False] := 32699122;
	RadioImage[True] := 16777216;
	(IUnknown(Columns.Add('Check')) as EXTREELib_TLB.Column).Def[EXTREELib_TLB.exCellHasRadioButton] := OleVariant(True);
	with Items do
	begin
		AddItem('Radio 1');
		CellState[OleVariant(AddItem('Radio 2')),OleVariant(0)] := 1;
		AddItem('Radio 1');
	end;
	EndUpdate();
end
608
Can I display the check-box with a solid color

with Tree1 do
begin
	BeginUpdate();
	CheckImage[EXTREELib_TLB.Unchecked] := 32699122;
	CheckImage[EXTREELib_TLB.Checked] := 16777216;
	(IUnknown(Columns.Add('Check')) as EXTREELib_TLB.Column).Def[EXTREELib_TLB.exCellHasCheckBox] := OleVariant(True);
	with Items do
	begin
		AddItem('Check 1');
		CellState[OleVariant(AddItem('Check 2')),OleVariant(0)] := 1;
		AddItem('Check 3');
	end;
	EndUpdate();
end
607
Can I display the column's multiple-lines caption vertically oriented (method 2)

with Tree1 do
begin
	BeginUpdate();
	HeaderHeight := 48;
	ColumnAutoResize := True;
	with Columns do
	begin
		Add('And others ...');
		with (IUnknown(Add('')) as EXTREELib_TLB.Column) do
		begin
			HTMLCaption := 'First Column';
			HeaderVertical := True;
			Width := 36;
			AllowSizing := False;
			Def[EXTREELib_TLB.exCellHasCheckBox] := OleVariant(True);
			Def[EXTREELib_TLB.exCellPaddingLeft] := OleVariant(8);
			Position := 0;
		end;
		with (IUnknown(Add('')) as EXTREELib_TLB.Column) do
		begin
			HTMLCaption := '<c><b>Second Column';
			HeaderVertical := True;
			Width := 36;
			AllowSizing := False;
			Def[EXTREELib_TLB.exCellHasCheckBox] := OleVariant(True);
			Def[EXTREELib_TLB.exCellPaddingLeft] := OleVariant(8);
			Position := 1;
		end;
		with (IUnknown(Add('')) as EXTREELib_TLB.Column) do
		begin
			HTMLCaption := '<r>Third Column';
			HeaderVertical := True;
			Width := 36;
			AllowSizing := False;
			Def[EXTREELib_TLB.exCellHasCheckBox] := OleVariant(True);
			Def[EXTREELib_TLB.exCellPaddingLeft] := OleVariant(8);
			Position := 2;
		end;
	end;
	with Items do
	begin
		CellState[OleVariant(AddItem('Item 1')),OleVariant(3)] := 1;
		CellState[OleVariant(AddItem('Item 2')),OleVariant(2)] := 1;
		CellState[OleVariant(AddItem('Item 3')),OleVariant(1)] := 1;
	end;
	EndUpdate();
end
606
Can I display the column's multiple-lines caption vertically oriented (method 1)

with Tree1 do
begin
	BeginUpdate();
	HeaderHeight := 48;
	HeaderSingleLine := False;
	ColumnAutoResize := True;
	with Columns do
	begin
		Add('And others ...');
		with (IUnknown(Add('First Column')) as EXTREELib_TLB.Column) do
		begin
			HeaderVertical := True;
			Width := 36;
			AllowSizing := False;
			Def[EXTREELib_TLB.exCellHasCheckBox] := OleVariant(True);
			Def[EXTREELib_TLB.exCellPaddingLeft] := OleVariant(8);
			Position := 0;
		end;
		with (IUnknown(Add('Second Column')) as EXTREELib_TLB.Column) do
		begin
			HeaderBold := True;
			HeaderVertical := True;
			Width := 36;
			AllowSizing := False;
			Def[EXTREELib_TLB.exCellHasCheckBox] := OleVariant(True);
			Def[EXTREELib_TLB.exCellPaddingLeft] := OleVariant(8);
			Position := 1;
		end;
		with (IUnknown(Add('Third Column')) as EXTREELib_TLB.Column) do
		begin
			HeaderVertical := True;
			Width := 36;
			AllowSizing := False;
			Def[EXTREELib_TLB.exCellHasCheckBox] := OleVariant(True);
			Def[EXTREELib_TLB.exCellPaddingLeft] := OleVariant(8);
			Position := 2;
		end;
	end;
	with Items do
	begin
		CellState[OleVariant(AddItem('Item 1')),OleVariant(3)] := 1;
		CellState[OleVariant(AddItem('Item 2')),OleVariant(2)] := 1;
		CellState[OleVariant(AddItem('Item 3')),OleVariant(1)] := 1;
	end;
	EndUpdate();
end
605
Can I display the column's caption vertically oriented (method 2)

with Tree1 do
begin
	BeginUpdate();
	HeaderHeight := 48;
	ColumnAutoResize := True;
	with Columns do
	begin
		Add('And others ...');
		with (IUnknown(Add('')) as EXTREELib_TLB.Column) do
		begin
			HTMLCaption := 'First';
			HeaderVertical := True;
			Width := 20;
			AllowSizing := False;
			Def[EXTREELib_TLB.exCellHasCheckBox] := OleVariant(True);
			Position := 0;
		end;
		with (IUnknown(Add('')) as EXTREELib_TLB.Column) do
		begin
			HTMLCaption := '<c><b>Second';
			HeaderVertical := True;
			Width := 20;
			AllowSizing := False;
			Def[EXTREELib_TLB.exCellHasCheckBox] := OleVariant(True);
			Position := 1;
		end;
		with (IUnknown(Add('')) as EXTREELib_TLB.Column) do
		begin
			HTMLCaption := '<r>Third';
			HeaderVertical := True;
			Width := 20;
			AllowSizing := False;
			Def[EXTREELib_TLB.exCellHasCheckBox] := OleVariant(True);
			Position := 2;
		end;
	end;
	with Items do
	begin
		CellState[OleVariant(AddItem('Item 1')),OleVariant(3)] := 1;
		CellState[OleVariant(AddItem('Item 2')),OleVariant(2)] := 1;
		CellState[OleVariant(AddItem('Item 3')),OleVariant(1)] := 1;
	end;
	EndUpdate();
end
604
Can I display the column's caption vertically oriented (method 1)

with Tree1 do
begin
	BeginUpdate();
	HeaderHeight := 48;
	ColumnAutoResize := True;
	with Columns do
	begin
		Add('And others ...');
		with (IUnknown(Add('First')) as EXTREELib_TLB.Column) do
		begin
			HeaderVertical := True;
			Width := 20;
			AllowSizing := False;
			Def[EXTREELib_TLB.exCellHasCheckBox] := OleVariant(True);
			Position := 0;
		end;
		with (IUnknown(Add('Second')) as EXTREELib_TLB.Column) do
		begin
			HeaderBold := True;
			HeaderVertical := True;
			Width := 20;
			AllowSizing := False;
			Def[EXTREELib_TLB.exCellHasCheckBox] := OleVariant(True);
			Position := 1;
		end;
		with (IUnknown(Add('Third')) as EXTREELib_TLB.Column) do
		begin
			HeaderVertical := True;
			Width := 20;
			AllowSizing := False;
			Def[EXTREELib_TLB.exCellHasCheckBox] := OleVariant(True);
			Position := 2;
		end;
	end;
	with Items do
	begin
		CellState[OleVariant(AddItem('Item 1')),OleVariant(3)] := 1;
		CellState[OleVariant(AddItem('Item 2')),OleVariant(2)] := 1;
		CellState[OleVariant(AddItem('Item 3')),OleVariant(1)] := 1;
	end;
	EndUpdate();
end
603
How do I automatically bold items being checked

// CellStateChanged event - Fired after cell's state has been changed.
procedure TForm1.Tree1CellStateChanged(ASender: TObject; Item : HITEM;ColIndex : Integer);
begin
end;

with Tree1 do
begin
	BeginUpdate();
	SelBackMode := EXTREELib_TLB.exTransparent;
	with ConditionalFormats.Add('%CS0','check') do
	begin
		Bold := True;
	end;
	(IUnknown(Columns.Add('Items')) as EXTREELib_TLB.Column).Def[EXTREELib_TLB.exCellHasCheckBox] := OleVariant(True);
	(IUnknown(Columns.Add(Tree1.ConditionalFormats.Item['check'].Expression)) as EXTREELib_TLB.Column).FormatColumn := Tree1.ConditionalFormats.Item['check'].Expression;
	with Items do
	begin
		AddItem('Item 1');
		CellState[OleVariant(AddItem('Item 2')),OleVariant(0)] := 1;
		AddItem('Item 3');
	end;
	EndUpdate();
end
602
How can I include the child items, when a filter is applied

with Tree1 do
begin
	BeginUpdate();
	ColumnAutoResize := True;
	ContinueColumnScroll := False;
	MarkSearchColumn := False;
	SearchColumnIndex := 1;
	Indent := 16;
	LinesAtRoot := EXTREELib_TLB.exLinesAtRoot;
	FilterBarPromptVisible := True;
	FilterBarPromptPattern := 'Nancy';
	FilterInclude := EXTREELib_TLB.exItemsWithChilds;
	with Columns do
	begin
		(IUnknown(Add('Name')) as EXTREELib_TLB.Column).Width := 96;
		(IUnknown(Add('Title')) as EXTREELib_TLB.Column).Width := 96;
		Add('City');
	end;
	with Items do
	begin
		h0 := AddItem('Nancy Davolio');
		CellCaption[OleVariant(h0),OleVariant(1)] := 'Sales Representative';
		CellCaption[OleVariant(h0),OleVariant(2)] := 'Seattle';
		h0 := InsertItem(h0,Null,'Andrew Fuller');
		CellCaption[OleVariant(h0),OleVariant(1)] := 'Vice President, Sales';
		CellCaption[OleVariant(h0),OleVariant(2)] := 'Tacoma';
		h0 := InsertItem(h0,Null,'Michael Suyama');
		CellCaption[OleVariant(h0),OleVariant(1)] := 'Sales Representative';
		CellCaption[OleVariant(h0),OleVariant(2)] := 'London';
		h0 := AddItem('Janet Leverling');
		CellCaption[OleVariant(h0),OleVariant(1)] := 'Sales Representative';
		CellCaption[OleVariant(h0),OleVariant(2)] := 'Kirkland';
		h0 := InsertItem(h0,Null,'Margaret Peacock');
		CellCaption[OleVariant(h0),OleVariant(1)] := 'Sales Representative';
		CellCaption[OleVariant(h0),OleVariant(2)] := 'Redmond';
	end;
	ApplyFilter();
	EndUpdate();
end
601
How do I get sorted the column as string, numeric, date, date and time. Also how can it be applied to drop down filter panel

with Tree1 do
begin
	BeginUpdate();
	with (IUnknown(Columns.Add('Date')) as EXTREELib_TLB.Column) do
	begin
		SortType := EXTREELib_TLB.SortDate;
		DisplayFilterButton := True;
		DisplayFilterPattern := False;
		DisplayFilterDate := True;
		FilterList := Integer(EXTREELib_TLB.exShowFocusItem) Or Integer(EXTREELib_TLB.exShowCheckBox) Or Integer(EXTREELib_TLB.exSortItemsDesc);
	end;
	with (IUnknown(Columns.Add('DateTime')) as EXTREELib_TLB.Column) do
	begin
		SortType := EXTREELib_TLB.SortDateTime;
		DisplayFilterButton := True;
		DisplayFilterPattern := False;
		FilterList := Integer(EXTREELib_TLB.exShowFocusItem) Or Integer(EXTREELib_TLB.exShowCheckBox) Or Integer(EXTREELib_TLB.exSortItemsDesc);
	end;
	with (IUnknown(Columns.Add('Time')) as EXTREELib_TLB.Column) do
	begin
		SortType := EXTREELib_TLB.SortTime;
		DisplayFilterButton := True;
		DisplayFilterPattern := False;
		FilterList := Integer(EXTREELib_TLB.exShowFocusItem) Or Integer(EXTREELib_TLB.exShowCheckBox) Or Integer(EXTREELib_TLB.exSortItemsDesc);
		FormatColumn := 'time(value)';
	end;
	with (IUnknown(Columns.Add('Numeric')) as EXTREELib_TLB.Column) do
	begin
		SortType := EXTREELib_TLB.SortNumeric;
		DisplayFilterButton := True;
		FilterList := Integer(EXTREELib_TLB.exShowFocusItem) Or Integer(EXTREELib_TLB.exShowCheckBox) Or Integer(EXTREELib_TLB.exSortItemsDesc);
	end;
	with (IUnknown(Columns.Add('String')) as EXTREELib_TLB.Column) do
	begin
		DisplayFilterButton := True;
		FilterList := Integer(EXTREELib_TLB.exShowFocusItem) Or Integer(EXTREELib_TLB.exShowCheckBox) Or Integer(EXTREELib_TLB.exSortItemsDesc);
	end;
	with Items do
	begin
		h := AddItem('1/27/2010');
		CellCaption[OleVariant(h),OleVariant(1)] := '1/27/2010 10:00:00 AM';
		CellCaption[OleVariant(h),OleVariant(2)] := CellCaption[OleVariant(h),OleVariant(1)];
		CellCaption[OleVariant(h),OleVariant(3)] := OleVariant(1);
		CellCaption[OleVariant(h),OleVariant(4)] := CellCaption[OleVariant(h),OleVariant(3)];
		h := AddItem('1/27/2011');
		CellCaption[OleVariant(h),OleVariant(1)] := '1/27/2011 9:00:00 AM';
		CellCaption[OleVariant(h),OleVariant(2)] := CellCaption[OleVariant(h),OleVariant(1)];
		CellCaption[OleVariant(h),OleVariant(3)] := OleVariant(11);
		CellCaption[OleVariant(h),OleVariant(4)] := CellCaption[OleVariant(h),OleVariant(3)];
		h := AddItem('11/2/2010');
		CellCaption[OleVariant(h),OleVariant(1)] := '11/2/2010 9:00:00 AM';
		CellCaption[OleVariant(h),OleVariant(2)] := CellCaption[OleVariant(h),OleVariant(1)];
		CellCaption[OleVariant(h),OleVariant(3)] := OleVariant(2);
		CellCaption[OleVariant(h),OleVariant(4)] := CellCaption[OleVariant(h),OleVariant(3)];
	end;
	Columns.Item['DateTime'].DisplayFilterDate := False;
	EndUpdate();
end