News in versions: FastGrid 1.0, TreeGrid 17.0
FastGrid FastSheet ExamplesSamples DocumentationDoc Download Licensing Prices Buy Development
services
References References Contacts
TreeGrid Gantt chart SpreadSheet ExamplesSamples DocumentationDoc Download Licensing Prices Buy Contacts
FastGrid documentation
Search in documentation
FastGrid versions compatibility

Changes log (txt file) Compare FastGrid 1.0 & TreeGrid 17.1

Using in JavaScript frameworks

Angular Ember Express React Svelte Vue Other frameworks NodeJS server SalesForce LWC

Data and creating FastGrid

Simple examples of creating FastGrid Create FastGrid Display grid Access grid by API Sheets, more grids switched in one place Layout and configuration Data rows, columns, toolbars, images Changes in data rows, columns, toolbars Saving changes to server Mark changes Loading children on expand parent Short format

Layout - grid parts

Parts - ColParts and RowParts Part size Part scroll position Sets Column sets Row sets

Toolbars

Toolbar Cells Icon Height Width Toolbar position Dragging and manipulating cells Special toolbars

Rows and columns
Default rows, columns, cells, toolbars
Row and column identity

Row / column id Row / column index Row / column name

Row and column manipulation

API to get grid objects Auto added columns & rows on scroll Blocks of rows / columns Adding / copying / moving Deleting Showing and hiding Layout menu Selecting rows and columns Fill cell values by dragging Locking grid against changes Undo & redo

Row and column tree

Row and column tree Row tree Column tree Expand & collapse

Cells
Cell values and attributes

Read and write any values by API Cell value Cell attributes Cell value & attributes in UTF8 Store

Editing cells

Editing During editing Validation and errors

Cell images

Row cell side icons Icons definition Mark icons and charts Mark icons list Row cell floating images

Cell size

Row height Column width Resizing rows and columns Padding Margin Cell span

Cell style

Grid style and look Cell style permissions Cell style Cell outer border Cell inner border Alternate row & column background

Other cell features

Cell hyperlink Cell tooltip Static cells Other cell attributes Row & column attributes to speed up

Cell types and formats
Cell type and format Range - more values / ranges in cell String type Html type Auto type
Bool type

Bool type Check side icon Bool type & Check side icon

Number type

Format Localization

Date type

Format Localization Calendar

Calculations - formulas
JavaScript formulas

JavaScript formulas Aggregate functions String aggregate functions Other functions

Editable formulas

Formula rules Formula attributes Defined names for editable formulas Conditional functions Lookup functions Cell reference functions Logical functions Informational functions Mathematical functions Trigonometry functions Rounding numbers Number conversions String functions Date functions Summary functions

Dialogs and menus

Dialog Dialog Place Dialog API Menu definition in Script Cell menu List Suggest

Features
Sorting rows / columns

Sorting Sorting settings Comparing strings

Grouping rows / columns

Grouping Grouping settings Comparing strings Pivot grid

Filtering rows and columns

Filtering Filter settings Comparing strings

Search in cells Import files to grid
Export files

Export files Export and copy to clipboard CSV data

Copy & paste via system clipboard

Copy & paste Copy to clipboard Paste from clipboard

Printing

Print Print to PDF

Global grid settings
Grid size & scroll

Grid size Grid scrollbars Paging and view Media rules - responsive design

Saving settings in storage or cookies
Focus and hover cells

Focus cell and cell ranges Mouse hover cells Highlight cells, rows and columns

Events

Mouse events Key events API events

Language

Translation Languages

Messages

Message Message style

Other API

API for iterating rows and columns Paint and repaint Various API methods

Debug & files

Debugging FastGrid files

UTF8 Store - fast & short data
Introduction - License & download

Basic description Main advantages Basic usage License Download Documentation

Script language implementations

JavaScript C# JAVA PHP

Suggested ucodes

Bits - small integers or enums Integers or enums with strings Date and time Floating point numbers Special strings

Basic ucodes

Integer 1 char String 1 char Date 1 char Bits 1 char Integer 2 chars String 2 chars Date 2 chars Float 2 chars Integer 3 chars String 3 chars Date 3 chars Integer and double float 5 chars String 5 chars Date 5 chars Fixed length string Separated strings Adjacent strings Prefix for escaping string Fixed length data Unused custom codes Prefix for stored separator or length Prefix for stored base number Unused basic ucodes

Complex ucodes

chars signed decimals multiple limits varstrings escape base chars2 signed2 decimals2 multiple2 limits2

Internal coding Profiling times for ucode options Function reference

Default rows, columns, cells and toolbars

FastGrid documentation

Every item (row, column, cell, toolbar and toolbar cell) can have D attribute to specify default item.
From default item are read all attributes that are null in the referring item. Every item can refer only to one default item (of the same kind as referring item).
The default item can be changed (by API or on some conditions) for any referring item, it changes all default attributes in the referring item.

Every default item can also refer one (or more) other default items by their D attribute. The relations between default items are solved on loading, so after load every default item contains all its attributes read from all its default items and no D attribute.
Row, Col, Cell, Toolbar, Tool string / int

D

GetD SetD
Reference to default item (its id) of the same kind (Row can refer only to DefRow, etc.).
From default item are read all attributes that are null in the referring item. Every item can refer only to one default item.
The default item can be changed (by SetD or on apply DEmpty / DParent) for any referring item, it changes all default attributes in the referring item.
If the item is defined by number or string and not by object, it is set as D attribute if it is existing default object and also as id attribute, for example Head:[ "Header" ] is the same as Head:[ { D:"Header", id:"Header" } ]
DefRow, DefCol, DefCell, DefToolbar, DefTool, CellBorder string / int

D

Reference to default item(s) of the same kind (DefRow can refer only to DefRow, etc.). The D can be:
a) string or number as id of the default,
b) comma separated string as list of the defaults id,
c) array of strings or numbers as list of the defaults id.
If more referred defaults have defined the same attribute, the first listed default is preferred.
If the same attributes are defined somewhere deep (in referred defaults of the referred defaults), preferred is the shallower definition.
The relations between default items are solved on loading, so after load every default item contains all its attributes read from all its default items and no D attribute.
Row, Col string / int

DA

GetAttr SetAttr
Default cell attributes for all the row / column cells. Reference to DefCells.
It is used only if the cell has not set the default attribute in A or B.
If defined both Row.DA and Col.DA, it is taken as Row.DA + Col.DA.
! Grid method string

OnGetDA

(Grid grid, Row row, Col col, string DA)
Called to get default cell id to DefCells if defined neither A[AIndex].D nor B[BIndex].
DA is predefined default cell id read from Row and Col DA. Return DA or another default cell id.
Returning null is the same as returning DA. Return "" to not use any cell default.
Low level API event called many times.
This event handler code should be very fast, otherwise it will slow down painting grid and cause choppy scrolling!
Toolbar string / int

DTool

["Icon"/"Cell"]
Default toolbar cell attributes for all cells.
Default value is "Icon" for cells without Type set and "Cell" for all other cells with type Type set.
It is set to all toolbar cells without D attribute on loading.
Toolbar string / int

DToolActive

Default toolbar cell attributes for active sheet cell on Sheets toolbar.
Row, Col string / int

DEmpty

GetAttr SetAttr
Value of default row / column D that is assigned to the row / column when it loses all its children (by moving or deleting).
It is not used on loading.
Row, Col string / int

DParent

GetAttr SetAttr
Value of default row / column D that is assigned to the row / column when it gets some child (by moving or adding).
It is not used on loading.
Row, Col, Part string / int

CD

["Row" / "Col"] GetAttr SetAttr
Reference to default item (its id) for all children that have not set their D explicitly.
It must be of the same kind as the referrer (Row can refer only to DefRow, etc.).
Row, Col, Toolbar string

Kind

[...] GetAttr
The row / column or toolbar can have the Kind attribute set special behavior and features.
The Kind attribute is usually not set explicitly, but it is set in default item and assigned by D attribute.
Auto generated id for items with Kind is set as Kind + index. If the Kind is defined in default row / column, the id is generated by the Kind only from this default, not from any its ancestor!
HeaderRow, ColD: Header, IndexColumn / row captions
PanelRow, ColD: PanelPanel with buttons
FilterRow, ColD: FilterControls filtering rows / columns
StickyRowD: StickySticky row like CSS position: sticky
GroupToolbarD: GroupControls grouping rows / columns
HideToolbarD: HideControls showing / hiding columns / rows
Grid DefRow[id]

DefRows

Defined default rows that can be assigned to Row by its id to D attribute.
If row has not set D attribute, it has assigned DefRow according to its Kind attribute or if the Kind is not set, the "Row".
By default (in Defaults.js) there are defined these DefRow:
BaseBase default inherited by all default rows without explicitly set the D attribute. Except to Base DefRow itself.
RowDefault row assigned to every Row without explicitly set the Kind attribute and to Kind = "Row" rows.
SpecialDefault row inherited by the special defaults "Header", "Index", "Panel" and "Filter".
ReadOnlyDefault row inherited by the special read only defaults "Header", "Index", "Panel".
HeaderDefault row assigned to every Header row (Kind = "Header", Index = 2).
HeaderFocusDefault row that inherits "Header" and attaches events for focusing whole columns instead of sorting and dragging.
IndexDefault row assigned to every Index row (Kind = "Header", Index = 1). Inherits "Header" default.
IndexFocusDefault row that inherits "Index" and attaches events for focusing whole columns instead of sorting and dragging.
PanelDefault row assigned to every Panel row (Kind = "Panel").
FilterDefault row assigned to every Filter row (Kind = "Filter").
StickyDefault row assigned to sticky row.
GroupDefault row assigned to every group row created by grouping.
Grid DefCol[id]

DefCols

Defined default columns that can be assigned to Col by its id to D attribute.
If column has not set D attribute, it has assigned DefCol according to its Kind attribute or if the Kind is not set, the "Col".
By default (in Defaults.js) there are defined these DefCol:
BaseBase default inherited by all default rows without explicitly set the D attribute. Except to Base DefCol itself.
ColDefault column assigned to every Col without explicitly set the Kind attribute and to Kind = "Col" rows.
SpecialDefault column inherited by the special defaults "Header", "Index", "Panel" and "Filter".
ReadOnlyDefault column inherited by the special read only defaults "Header", "Index", "Panel".
HeaderDefault column assigned to every Header column (Kind = "Header").
HeaderFocusDefault column that inherits "Header" and attaches events for focusing whole rows instead of sorting and dragging.
IndexDefault column assigned to every Index column (Kind = "Index"). Inherits "Header" default.
IndexFocusDefault column that inherits "Index" and attaches events for focusing whole rows instead of sorting and dragging.
PanelDefault column assigned to every Panel column (Kind = "Panel").
FilterDefault column assigned to every Filter column (Kind = "Filter").
GroupDefault column assigned to every group column created by grouping.
EmptyDefault column that can be assigned to empty column to fill the rest space of the part.
Grid DefCell[id]

DefCells

Defined default cells that can be assigned to cells by its id into Row / Col A, B or DA attribute.
If the cell has not set DefCell via Row / Col A, B or DA attribute, it has no DefCell.
Only the DefCell can contain xxxFormula to calculate cell attribute xxx by formula. It is the only way to use calculated attributes.
By default (in Defaults.js) there are defined these DefCell:
BaseBase default inherited by all default cells without explicitly set the D attribute. Except the Base DefCell itself. It is not applied to cells without DefCell set, if not defined DefCell Cell!
CellDefault cell, assigned to all cells without assigned DefCell. It is not defined by default! Defining it will slightly slow down the grid!
Grid DefToolbar[id]

DefToolbars

Defined default toolbars that can be assigned to Toolbar by its id to D attribute.
If toolbar has not set D attribute, it has set the "Toolbar".
By default (in Defaults.js) there are defined these DefToolbar:
Base default toolbars assigned automatically
BaseBase default inherited by all default toolbars without explicitly set the D attribute. Except to Base DefToolbar itself.
ToolbarDefault toolbar assigned to every Toolbar without explicitly set the D attribute.
Toolbars to drop columns or rows
GroupToolbar with empty space as the last cell to drop columns or rows for grouping. It is possible to add Cells like GroupList and / or Group to show actual grouping.
HideToolbar with empty space as the last cell to drop columns or rows to hide them.
PivotRowsToolbar with empty space as the last cell to drop columns to add them to PivotRows.
PivotColsToolbar with empty space as the last cell to drop columns to add them to PivotCols.
PivotDataToolbar with empty space as the last cell to drop columns to add them to PivotData.
Toolbars with icons
Data1Toolbar showing base data cells: Import, Save, Reload, Print, Pdf, PrintPdf, Export, Copy, Paste, Undo, Redo.
Data2Toolbar showing cells for row and column manipulation: Add, Delete, Hide, Select, Collapse, Indent, Span, Split, Fix
Data3Toolbar showing the rest of data icons: AddImage, AddLink, AddTip, AddName, Names
Text1Toolbar showing the text style icons: Bold, Italic, Underline, Strike, TextFont, TextSize, IncTextSize, ClearTextSize, DecTextSize, UpperCase, LowerCase
Text2Toolbar showing the cell style and format icons: Format, AlignLeft, AlignCenter, AlignRight, AlignTop, AlignMiddle, AlignBottom, IndentLeft, IndentRight, WrapText, Rotate
Text3Toolbar showing the rest of text icons: TextColor, TextShadow, TextLine, Color, Border, ClearStyle, ClearValue, NoEdit
SettingsToolbar showing settings cells: FilterAction, ClearSort, Lock, Settings.
LayoutToolbar showing layout cells: Layout, UpdateToolbars. This toolbar cannot be hidden when updating toolbars.
Other toolbars
SheetsToolbar showing all sheets in actual book.
CookiesToolbar showing cells to show and manipulate saved configurations.
EditToolbar showing Focus and ExternalEdit text boxes like in Excel edit line.
SearchToolbar showing SearchText text box and Search icon to provide search in grid.
VersionToolbar showing FastGrid version. It must have id="Version" and no Cells defined. Or defined just as string "Version".
Grid DefTool[id]

DefTools

Defined default toolbar cells that can be assigned to Tool by its id to D attribute.
If toolbar cell has not set D attribute, it has set the "Icon" if its Type is not set or "Icon", in other case has set "Cell".
By default (in Defaults.js) there are defined these DefTool:

Base default cells assigned automatically
BaseBase default inherited by all default toolbar cells without explicitly set the D attribute. Except to Base DefTool itself.
CellDefault toolbar cell assigned to all cells with Type set to anything except empty string. Without any special setting.
IconDefault toolbar cell assigned to all cells with Type not set. Shows icon according to the cell id, it it has not set Icon.
ButtonDefault toolbar cell assigned to buttons in FastGrid dialogs. Shows cell border as button.
Custom cells
SwitchShows Bool type without the icon. Highlights the text when on. Set Text attribute to display the text and OnChange to catch the change.
Cells for editing, with CellBorder
ListShows popup list in List. Textbox with cell border around text. Uses String type.
ListSmallLike List, but with wide and high cell border.
ListFirstLike List, with padding to use as the first cell from adjacent edits.
ListNextLike List, with padding to use as the middle cell from adjacent edits.
ListLastLike List, with padding to use as the last cell from adjacent edits.
ListSingleLike List, with padding to use as single cell in the same spaces as adjacent edits.
EditShows editable textbox. Textbox with cell border around text. Uses String type.
EditSmallLike Edit, but with wide and high cell border.
EditFirstLike Edit, with padding to use as the first cell from adjacent edits.
EditNextLike Edit, with padding to use as the middle cell from adjacent edits.
EditLastLike Edit, with padding to use as the last cell from adjacent edits.
EditSingleLike Edit, with padding to use as single cell in the same spaces as adjacent edits.
EditListDefault toolbar cell showing editable textbox with popup list in List. Textbox with cell border around text. Uses String type.
Empty cells
SpaceShows inactive empty space of fixed width.
EmptyShows inactive empty space of relative width to fill the rest of part width.
LabelShows inactive text of type String.
MenuCaptionShows inactive text of type String used for menu captions.
SeparatorShows vertical line as separator between toolbars or tools. The line as high as the toolbar.
Layout
UpdateToolbarsIcon to switch DraggingToolbars on and off to permit / restrict users dragging and hiding toolbars.
LayoutIcon to show layout menu to choose the rows and columns visibility.
DragHideDefault cell as column / row actually hidden.
DropHideDrop area for dropping columns / rows to hide them.
Sorting, grouping & filtering
SortIcon with popup to clear actual sorting or to show sorting options.
ClearSortIcon to clear actual sorting.
GroupIcon with popup to switch the grouping on / off or to show grouping options.
GroupListShows popup list from List with predefined group choices.
DragGroupDefault cell as column / row actually used for group by.
DropGroupDrop area for dropping columns / rows to group by them.
FilterIcon with popup to switch the FilterAction and / or / off or to show filter options.
FilterActionIcon to switch the FilterAction and / or / off.
FilterTreeCombo box with popup list to choose FilterTree.
Copy & paste and search
CopyIcon with popup to copy selected cells to clipboard or to show list with copy to clipboard options.
CopyOnlyIcon to copy selected cells to clipboard.
PasteIcon with popup to paste cells or rows from clipboard or to show list with paste from clipboard options. On some systems pasting can be done only by Ctrl+V or from browser menu
PasteOnlyIcon to paste cells or rows from clipboard. On some systems pasting can be done only by Ctrl+V or from browser menu
SearchIcon with popup to run search in grid or to show list with search options.
SearchTextTextbox to enter text to search in grid.
Base data controls
ImportIcon to import local xlsx or json file to grid.
SaveIcon to send changes or whole data from grid server.
ReloadIcon to reload data from server and discard all changes.
PrintIcon to print the grid data to printer.
PdfIcon to export data to pdf. Requires server side code to print grid to html and convert it to pdf.
PrintPdfIcon to print data to printer or to export to pdf. PDF export requires server side code to print grid to html and convert it to pdf.
ExportIcon to export the grid data to xlsx, csv or html.
UndoIcon to undo the last action done in grid.
RedoIcon to redo the last undone action done in grid.
Data manipulation - both rows and columns
SelectIcon to show popup menu to choose action to select row(s) or column(s).
DeleteIcon to show popup menu to choose action to delete or undelete row(s) or column(s).
HideIcon to show popup menu to choose action to hide or show row(s) or column(s).
AddIcon to show popup menu to choose action to add new or copy existing row(s) or column(s).
IndentIcon to show popup menu to choose action to indent or outdent row(s) or column(s).
CollapseIcon to show popup menu to choose action to collapse or expand row(s) or column(s).
Data manipulation - rows
SelectRowsIcon to select or unselect all rows.
DeleteRowsIcon to delete or undelete selected or focused row(s).
HideRowsIcon to hide selected or focused row(s).
AddRowsIcon to add new row(s) above focused row.
CopyRowsIcon to copy selected or focused row(s) above focused row.
AddRowEndIcon to add new row to the end of the default row part.
IndentRowsIcon to indent selected or focused row(s).
OutdentRowsIcon to outdent selected or focused row(s).
ExpandRowsIcon to expand all row(s).
CollapseRowsIcon to collapse all row(s).
Data manipulation - columns
SelectColsIcon to select or unselect all columns.
DeleteColsIcon to delete or undelete selected or focused column(s).
HideColsIcon to hide selected or focused column(s).
AddColsIcon to add new column(s) left to the focused column.
CopyColsIcon to copy selected or focused column(s) left to the focused column.
AddColEndIcon to add new column to the end of default column part.
IndentColsIcon to indent selected or focused column(s).
OutdentColsIcon to outdent selected or focused column(s).
ExpandColIcon to expand all column(s).
CollapseColsIcon to collapse all column(s).
Text controls
BoldIcon to switch bold text on / off actually focused cell(s) or edited text.
ItalicIcon to switch italic style on / off actually focused cell(s) or edited text.
UnderlineIcon to switch text underling on / off actually focused cell(s) or edited text.
StrikeIcon to switch text strike on / off actually focused cell(s) or edited text.
TextFontCombo box with popup list to choose font family of actually focused cell(s) or edited text.
TextSizeCombo box with popup list to choose font size of actually focused cell(s) or edited text.
IncTextSizeIcon to increase text size of actually focused cell(s) or edited text.
DecTextSizeIcon to decrease text size of actually focused cell(s) or edited text.
ClearTextSizeIcon to set default text size of actually focused cell(s) or edited text.
UpperCaseIcon to convert to upper case the actually focused cell(s) or edited text.
LowerCaseIcon to convert to lower case the actually focused cell(s) or edited text.
FormatCombo box with popup list to choose number or date format in actually focused Auto cell(s).
AlignLeftIcon to align left the text in actually focused cell(s).
AlignCenterIcon to center the text in actually focused cell(s).
AlignRightIcon to align right the text in actually focused cell(s).
AlignTopIcon to align top the text in actually focused cell(s) or make the edited text super.
AlignMiddleIcon to vertically center the text in actually focused cell(s) or make the edited text normal (clear super / sub).
AlignBottomIcon to align bottom the text in actually focused cell(s) or make the edited text sub.
IndentLeftIcon to decrease indent in actually focused cell(s).
IndentRightIcon to increase indent in actually focused cell(s).
WrapIcon to switch wrapping text on / off in actually focused cells(s).
RotateIcon to set or choose text rotation in actually focused cell(s). Not applicable for toolbar cells.
TextColorIcon to set or choose text color of actually focused cell(s) or edited text.
TextShadowIcon to set or choose text shadow style and color of actually focused cell(s) or edited text.
TextLineIcon to set or choose text line (underline / strike / overline), its style, width and color in actually focused cell(s) or edited text.
ColorIcon to set or choose cell background color, pattern or gradient in actually focused cell(s).
BorderIcon to set or choose border color, style and width of actually focused cell(s). Not applicable for toolbar cells.
ClearStyleIcon to clear all style settings in actually focused cell(s) or in edited text.
ClearValueIcon to clear all values in actually focused cell(s) or in edited text.
NoEditIcon to choose editing permissions in actually focused cell(s).
Other icons
AddImageIcon to show system dialog to choose local image file to add to grid into Images for focused cell. On tablets it is replaced by Image tool by Media.
ImageIcon to show menu with options to choose image actions and to show system dialog to choose local image file to add to grid into Images for focused cell.
AddLinkIcon to show prompt to enter link in focused cell(s) or edited text.
SpanIcon to span together focused range of cells.
SplitIcon to split spanned focused cell(s).
FixIcon to move all rows above focused row to above part and all columns left to the focused column to left part.
AddTipIcon to show prompt to enter tip for focused cell(s).
AddNameIcon to show prompt to enter name containing focused cell or cells range. To be used in editable formulas.
NamesIcon to show dialog with all defined names in grid to manipulate them.
LockIcon to show list of acual and available locks in grid to change them.
LayoutIcon to show dialog with rows, columns, toolbars and scrollbars to hide or show them.
SettingsIcon to show dialog with FastGrid configuration settings.
Cookies
CookiesList box with available saved configurations of the grid.
LoadCookieIcon to load configuration selected in Cookies.
SaveCookieIcon to save actual configuration to under name selected in Cookies.
DeleteCookieIcon to delete configuration selected in Cookies.
AddCookieIcon to show prompt to enter name for new configuration to save, to add it to Cookies.
Pivot
PivotListShows popup list from List with predefined pivot choices.
PivotIcon with popup to switch the pivot on / off or to show pivot options.
DragPivotDefault cell as column / row actually used for pivot (PivotRows, PivotCols, PivotData).
DragSourceDefault cell as column / row actually used as available source to drag to pivot.
DropPivotRowsDrop area for dropping columns / rows to create pivot grid from them.
DropPivotColsDrop area for dropping columns / rows to create pivot grid from them.
DropPivotDataDrop area for dropping columns / rows to create pivot grid from them.
PivotLabelInactive text label for pivot toolbars.
Sheets
SheetOne sheet in sheet list on Sheets toolbar.
SheetActiveHighlighted sheet (shown in actual grid) in sheet list on Sheets toolbar.
SheetsIcon to show menu with all sheets in actual book.
AddSheetIcon to add new empty sheet.
Special cells
FocusSpecial combo cell showing actually focused cell or cell range in grid. Editable to change the focus.
ExternalEditSpecial combo cell showing value of actually focused cell in grid. Editable to change the value.
DragToolbarSpecial icon cell that is shown as the first cell in every toolbar when DraggingToolbars is on.
DefRow, DefCol, DefCell, DefToolbar, DefTool string / int

id

["Base"] GetD
Unique identification of the default item. The id must be unique only among defaults of the same kind.
By this id is the default item referred by the D attribute.
By default all default items (without D attribute set) refer to "Base" default item of the same kind.
Grid method string

GetD

(Row row, Col col)
It is faster but less universal and safe than Get.
Returns D id. If row is null, returns column D, if col is null returns row D, otherwise returns cell D.
row, col can be also Toolbar cell.
Grid method bool

SetD

(Row row, Col col, string def, int changes = 0)
It is faster but less universal and safe than Set.
Sets def to the D. If row is null, sets column D, if col is null sets row D, otherwise sets cell D.
Returns true if the attribute value was changed, false if the def is the same as actual D (no change was done) and null for error.
def must be existing default item id of the same kind as the item that is assigned to. def must not be null (except changes = 2).

changes controls how the cell is marked as changed:
0 - simple set - fast, does not mark or clear changes, does not store or change original value, does not test if the value is the same.
1 - set and mark - marks changes, stores original value before the first change, tests if the value is the same. If the value is the same as original value, clears the marked changes.
2 - set, mark and restore - like 2, value can be null to restore original value and clears the marked changes.
3 - set and clear - clears marked changes and clears original value, the new cell value is taken as original unchanged value. Returns false if the value is the same as actual value and no original value is stored.
4 - set and test - like 0 but tests if the value is the same.

changes=1/2/3 is forced to 4 if not set second bit of CellChanges (cell) / ToolChanges (tool) or 7th bit of RowChanges (row) / ColChanges (column)
row, col can be also Toolbar cell.
Grid method string

MergeD

(string[] defs, object Def = null, string id = null)
Creates new default D derived from all defaults in defs list and returns its id.
Def can be object DefRows / DefCols / DefCells / DefTools / DefToolbars. If the Def set null, it is set to DefRows.
id is id of the newly created D. If the id already exists in Def, it is just returned and nothing is created. If the id is null, is create from defs separated by comma.
If more of the merged defaults define the same attribute, the attribute from the first default in defs is used.
Grid method any

GetDefAttr

(string type, string id, string attr)
It is faster but less universal and safe than Get.
Returns attribute value of given default item.
type can be "Row" to read from DefRows, "Col" to read from DefCols, "Cell" to read from DefCells, "Toolbar" to read from DefToolbars and "Tool" to read from DefTools.
id is the default item id. attr is the attribute name.
Returns null for not existing type, id or attr.
Grid method bool

SetDefAttr

(string type, string id, string attr, any value)
It is faster but less universal and safe than Set.
Sets value to attribute value of given default item.
type can be "Row" to read from DefRows, "Col" to read from DefCols, "Cell" to read from DefCells, "Toolbar" to read from DefToolbars and "Tool" to read from DefTools.
id is the default item id. attr is the attribute name.
Returns true for change, false for the same value (not changed) and null for error. Does not mark changes.