Custom icons
Replace any of the grid's built-in glyphs (sort arrows, filter funnel, expand/collapse triangles, pagination buttons, …) with your own bitmaps.
Overview
Grid.Icons is a collection of bitmap slots, one per built-in glyph. Each slot accepts a TTMSFNCBitmap. Slots left at nil keep their built-in vector icon.
Grid.Icons.SortAscendingIcon := MyAscIcon;
Grid.Icons.SortDescendingIcon := MyDescIcon;
Grid.Icons.FilterIcon := MyFilterIcon;
Grid.Icons.FilterActiveIcon := MyFilterActiveIcon;
Grid.Icons.ExpandIcon := MyExpandIcon;
Grid.Icons.CollapseIcon := MyCollapseIcon;
Quick example
procedure TForm1.FormCreate(Sender: TObject);
begin
Grid.Icons.SortAscendingIcon := LoadBitmap('icons/up.png');
Grid.Icons.SortDescendingIcon := LoadBitmap('icons/down.png');
Grid.Icons.FilterIcon := LoadBitmap('icons/funnel.png');
Grid.Icons.FilterActiveIcon := LoadBitmap('icons/funnel-active.png');
end;
Available slots
Sorting
| Slot | Used for |
|---|---|
SortAscendingIcon |
Header indicator when the column is sorted ascending. |
SortDescendingIcon |
Same, descending. |
Grid.Icons.SortAscendingIcon := BitmapContainer.FindBitmap('sort-asc');
Grid.Icons.SortDescendingIcon := BitmapContainer.FindBitmap('sort-desc');
Filtering
| Slot | Used for |
|---|---|
FilterIcon |
The funnel button on each filterable column header. |
FilterActiveIcon |
Variant shown when a filter is currently active on the column. |
FilterClearIcon |
The "clear filter" button in the filter row. |
FilterTypeIcon |
Drop-down arrow next to the filter type selector. |
Grid.Icons.FilterIcon := BitmapContainer.FindBitmap('filter');
Grid.Icons.FilterActiveIcon := BitmapContainer.FindBitmap('filter-active');
Grid.Icons.FilterClearIcon := BitmapContainer.FindBitmap('filter-clear');
Grid.Icons.FilterTypeIcon := BitmapContainer.FindBitmap('filter-type');
Tree / grouping
| Slot | Used for |
|---|---|
ExpandIcon |
Triangle/plus shown on collapsed group headers. |
CollapseIcon |
Same, when the group is expanded. |
CloseIcon |
Close button on a header group. |
Grid.Icons.ExpandIcon := BitmapContainer.FindBitmap('expand');
Grid.Icons.CollapseIcon := BitmapContainer.FindBitmap('collapse');
Grid.Icons.CloseIcon := BitmapContainer.FindBitmap('close');
Paging
| Slot | Used for |
|---|---|
FirstPageIcon |
First-page button. |
PreviousPageIcon |
Previous-page button. |
NextPageIcon |
Next-page button. |
LastPageIcon |
Last-page button. |
Paging
| Slot | Used for |
|---|---|
FirstPageIcon |
First-page button. |
PreviousPageIcon |
Previous-page button. |
NextPageIcon |
Next-page button. |
LastPageIcon |
Last-page button. |
Grid.Icons.FirstPageIcon := BitmapContainer.FindBitmap('page-first');
Grid.Icons.PreviousPageIcon := BitmapContainer.FindBitmap('page-prev');
Grid.Icons.NextPageIcon := BitmapContainer.FindBitmap('page-next');
Grid.Icons.LastPageIcon := BitmapContainer.FindBitmap('page-last');
Loading bitmaps
TTMSFNCBitmap accepts PNG, JPEG, BMP, and SVG. Load from a file:
procedure TForm1.LoadFilterIcon;
var
Bmp: TTMSFNCBitmap;
begin
Bmp := TTMSFNCBitmap.Create;
Bmp.LoadFromFile('icons/funnel.png');
Grid.Icons.FilterIcon := Bmp;
end;
Or from a TTMSFNCBitmapContainer registered on the form:
Grid.Icons.FilterIcon := BitmapContainer.FindBitmap('funnel');
Resetting to defaults
Assigning nil falls back to the built-in vector icon. To restore a single slot:
Grid.Icons.FilterIcon := nil;
Combining sort, filter, and grouping icons in one pass
Replace all interactive feature icons at form startup from a single TTMSFNCBitmapContainer:
procedure TForm1.FormCreate(Sender: TObject);
begin
{ Sorting icons }
Grid.Icons.SortAscendingIcon := BitmapContainer.FindBitmap('sort-asc');
Grid.Icons.SortDescendingIcon := BitmapContainer.FindBitmap('sort-desc');
{ Filter icons — active variant highlights columns with an applied filter }
Grid.Icons.FilterIcon := BitmapContainer.FindBitmap('filter');
Grid.Icons.FilterActiveIcon := BitmapContainer.FindBitmap('filter-active');
Grid.Icons.FilterClearIcon := BitmapContainer.FindBitmap('filter-clear');
{ Tree / grouping icons }
Grid.Icons.ExpandIcon := BitmapContainer.FindBitmap('expand');
Grid.Icons.CollapseIcon := BitmapContainer.FindBitmap('collapse');
{ Paging navigation }
Grid.Icons.FirstPageIcon := BitmapContainer.FindBitmap('page-first');
Grid.Icons.PreviousPageIcon := BitmapContainer.FindBitmap('page-prev');
Grid.Icons.NextPageIcon := BitmapContainer.FindBitmap('page-next');
Grid.Icons.LastPageIcon := BitmapContainer.FindBitmap('page-last');
end;
Any slot left unassigned falls back to the built-in vector icon automatically — you only need to replace the slots you want to customize.
Related API
Grid.Icons— the icon collection.Grid.BitmapContainer— registry of named bitmaps shared across the grid.