Class

# DesktopTable

<div class="rst-class">

forsearch

</div>

Table, Grid

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

## Description

The scrollable <span class="title-ref">DesktopTable</span> control displays one or more columns of information.

Rows can be held by the table itself or supplied by a `TableDataSource</api/interfaces/tabledatasource>`, in which case the table keeps no copy of the data and asks for the visible cells only.

## Properties

<div class="rst-class">

table-centered_columns_3_and_4

</div>

| Name                                                              | Type                                                                               | Read-Only | Shared |
|-------------------------------------------------------------------|------------------------------------------------------------------------------------|-----------|--------|
| `Active<desktoptable.active>`                                     | `Boolean</api/data_types/boolean>`                                                 | ✓         |        |
| `ActiveTextControl<desktoptable.activetextcontrol>`               | `DesktopTextControl</api/user_interface/desktop/desktoptextcontrol>`               | ✓         |        |
| `AllowAutoDeactivate<desktoptable.allowautodeactivate>`           | `Boolean</api/data_types/boolean>`                                                 |           |        |
| `AllowAutoHideScrollbars<desktoptable.allowautohidescrollbars>`   | `Boolean</api/data_types/boolean>`                                                 |           |        |
| `AllowColumnReordering<desktoptable.allowcolumnreordering>`       | `Boolean</api/data_types/boolean>`                                                 |           |        |
| `AllowExpandableRows<desktoptable.allowexpandablerows>`           | `Boolean</api/data_types/boolean>`                                                 |           |        |
| `AllowFocus<desktoptable.allowfocus>`                             | `Boolean</api/data_types/boolean>`                                                 |           |        |
| `AllowFocusRing<desktoptable.allowfocusring>`                     | `Boolean</api/data_types/boolean>`                                                 |           |        |
| `AllowResizableColumns<desktoptable.allowresizablecolumns>`       | `Boolean</api/data_types/boolean>`                                                 |           |        |
| `AllowResizableRows<desktoptable.allowresizablerows>`             | `Boolean</api/data_types/boolean>`                                                 |           |        |
| `AllowRowAnimation<desktoptable.allowrowanimation>`               | `Boolean</api/data_types/boolean>`                                                 |           |        |
| `AllowRowDragging<desktoptable.allowrowdragging>`                 | `Boolean</api/data_types/boolean>`                                                 |           |        |
| `AllowRowReordering<desktoptable.allowrowreordering>`             | `Boolean</api/data_types/boolean>`                                                 |           |        |
| `AllowTabs<desktoptable.allowtabs>`                               | `Boolean</api/data_types/boolean>`                                                 |           |        |
| `AllowTabStop<desktoptable.allowtabstop>`                         | `Boolean</api/data_types/boolean>`                                                 |           |        |
| `AlternatingRowColor<desktoptable.alternatingrowcolor>`           | `ColorGroup</api/graphics/colorgroup>`                                             |           |        |
| `Bold<desktoptable.bold>`                                         | `Boolean</api/data_types/boolean>`                                                 |           |        |
| `BottomInset<desktoptable.bottominset>`                           | `Double</api/data_types/double>`                                                   |           |        |
| `CellContainerPadding<desktoptable.cellcontainerpadding>`         | `Double</api/data_types/double>`                                                   |           |        |
| `ColumnCount<desktoptable.columncount>`                           | `Integer</api/data_types/integer>`                                                 |           |        |
| `ColumnWidths<desktoptable.columnwidths>`                         | `String</api/data_types/string>`                                                   |           |        |
| `ContainerCacheSize<desktoptable.containercachesize>`             | `Integer</api/data_types/integer>`                                                 |           |        |
| `Content<desktoptable.content>`                                   | `String</api/data_types/string>`                                                   |           |        |
| `DataSource<desktoptable.datasource>`                             | `TableDataSource</api/interfaces/tabledatasource>`                                 |           |        |
| `DefaultRowHeight<desktoptable.defaultrowheight>`                 | `Integer</api/data_types/integer>`                                                 |           |        |
| `DropIndicatorVisible<desktoptable.dropindicatorvisible>`         | `Boolean</api/data_types/boolean>`                                                 |           |        |
| `Enabled<desktoptable.enabled>`                                   | `Boolean</api/data_types/boolean>`                                                 |           |        |
| `FontName<desktoptable.fontname>`                                 | `String</api/data_types/string>`                                                   |           |        |
| `FontSize<desktoptable.fontsize>`                                 | `Single</api/data_types/single>`                                                   |           |        |
| `FontUnit<desktoptable.fontunit>`                                 | `FontUnits</api/graphics/fontunits>`                                               |           |        |
| `FrozenColumns<desktoptable.frozencolumns>`                       | `DesktopTableFrozenColumns</api/user_interface/desktop/desktoptablefrozencolumns>` | ✓         |        |
| `FrozenRows<desktoptable.frozenrows>`                             | `DesktopTableFrozenRows</api/user_interface/desktop/desktoptablefrozenrows>`       | ✓         |        |
| `GridColor<desktoptable.gridcolor>`                               | `ColorGroup</api/graphics/colorgroup>`                                             |           |        |
| `GridLineStyle<desktoptable.gridlinestyle>`                       | `DesktopTable.GridLineStyles<desktoptable.gridlinestyles>`                         |           |        |
| `Handle<desktoptable.handle>`                                     | `Ptr</api/data_types/additional_types/ptr>`                                        | ✓         |        |
| `HasAlternatingRowColors<desktoptable.hasalternatingrowcolors>`   | `Boolean</api/data_types/boolean>`                                                 |           |        |
| `HasBorder<desktoptable.hasborder>`                               | `Boolean</api/data_types/boolean>`                                                 |           |        |
| `HasColumnHeader<desktoptable.hascolumnheader>`                   | `Boolean</api/data_types/boolean>`                                                 |           |        |
| `HasHorizontalScrollbar<desktoptable.hashorizontalscrollbar>`     | `Boolean</api/data_types/boolean>`                                                 |           |        |
| `HasTranslucentBackground<desktoptable.hastranslucentbackground>` | `Boolean</api/data_types/boolean>`                                                 |           |        |
| `HasTranslucentHeader<desktoptable.hastranslucentheader>`         | `Boolean</api/data_types/boolean>`                                                 |           |        |
| `HasVerticalScrollbar<desktoptable.hasverticalscrollbar>`         | `Boolean</api/data_types/boolean>`                                                 |           |        |
| `HeaderHeight<desktoptable.headerheight>`                         | `Integer</api/data_types/integer>`                                                 |           |        |
| `HeadingIndex<desktoptable.headingindex>`                         | `Integer</api/data_types/integer>`                                                 |           |        |
| `Height<desktoptable.height>`                                     | `Integer</api/data_types/integer>`                                                 |           |        |
| `Index<desktoptable.index>`                                       | `Integer</api/data_types/integer>`                                                 |           |        |
| `InitialValue<desktoptable.initialvalue>`                         | `String</api/data_types/string>`                                                   |           |        |
| `Italic<desktoptable.italic>`                                     | `Boolean</api/data_types/boolean>`                                                 |           |        |
| `LastAddedColumnIndex<desktoptable.lastaddedcolumnindex>`         | `Integer</api/data_types/integer>`                                                 | ✓         |        |
| `LastAddedRowIndex<desktoptable.lastaddedrowindex>`               | `Integer</api/data_types/integer>`                                                 | ✓         |        |
| `LastColumnIndex<desktoptable.lastcolumnindex>`                   | `Integer</api/data_types/integer>`                                                 | ✓         |        |
| `LastRowIndex<desktoptable.lastrowindex>`                         | `Integer</api/data_types/integer>`                                                 | ✓         |        |
| `Left<desktoptable.left>`                                         | `Integer</api/data_types/integer>`                                                 |           |        |
| `LockBottom<desktoptable.lockbottom>`                             | `Boolean</api/data_types/boolean>`                                                 |           |        |
| `LockLeft<desktoptable.lockleft>`                                 | `Boolean</api/data_types/boolean>`                                                 |           |        |
| `LockRight<desktoptable.lockright>`                               | `Boolean</api/data_types/boolean>`                                                 |           |        |
| `LockTop<desktoptable.locktop>`                                   | `Boolean</api/data_types/boolean>`                                                 |           |        |
| `MouseCursor<desktoptable.mousecursor>`                           | `MouseCursor</api/user_interface/desktop/mousecursor>`                             |           |        |
| `Name<desktoptable.name>`                                         | `String</api/data_types/string>`                                                   | ✓         |        |
| `PanelIndex<desktoptable.panelindex>`                             | `Integer</api/data_types/integer>`                                                 |           |        |
| `Parent<desktoptable.parent>`                                     | `Object</api/data_types/additional_types/object>`                                  |           |        |
| `RequiresSelection<desktoptable.requiresselection>`               | `Boolean</api/data_types/boolean>`                                                 |           |        |
| `RowCount<desktoptable.rowcount>`                                 | `Integer</api/data_types/integer>`                                                 | ✓         |        |
| `RowHeight<desktoptable.rowheight>`                               | `Integer</api/data_types/integer>`                                                 | ✓         |        |
| `RowSelectionType<desktoptable.rowselectiontype>`                 | `DesktopTable.RowSelectionTypes<desktoptable.rowselectiontypes>`                   |           |        |
| `Scope<desktoptable.scope>`                                       | `Integer</api/data_types/integer>`                                                 | ✓         |        |
| `ScrollPosition<desktoptable.scrollposition>`                     | `Integer</api/data_types/integer>`                                                 |           |        |
| `ScrollPositionX<desktoptable.scrollpositionx>`                   | `Integer</api/data_types/integer>`                                                 |           |        |
| `SelectedRowCount<desktoptable.selectedrowcount>`                 | `Integer</api/data_types/integer>`                                                 | ✓         |        |
| `SelectedRowIndex<desktoptable.selectedrowindex>`                 | `Integer</api/data_types/integer>`                                                 |           |        |
| `SelectedRowText<desktoptable.selectedrowtext>`                   | `String</api/data_types/string>`                                                   | ✓         |        |
| `SortingColumn<desktoptable.sortingcolumn>`                       | `Integer</api/data_types/integer>`                                                 |           |        |
| `TabIndex<desktoptable.tabindex>`                                 | `Integer</api/data_types/integer>`                                                 |           |        |
| `Tooltip<desktoptable.tooltip>`                                   | `String</api/data_types/string>`                                                   |           |        |
| `Top<desktoptable.top>`                                           | `Integer</api/data_types/integer>`                                                 |           |        |
| `TopInset<desktoptable.topinset>`                                 | `Double</api/data_types/double>`                                                   |           |        |
| `Transparent<desktoptable.transparent>`                           | `Boolean</api/data_types/boolean>`                                                 |           |        |
| `Underline<desktoptable.underline>`                               | `Boolean</api/data_types/boolean>`                                                 |           |        |
| `Visible<desktoptable.visible>`                                   | `Boolean</api/data_types/boolean>`                                                 |           |        |
| `Width<desktoptable.width>`                                       | `Integer</api/data_types/integer>`                                                 |           |        |
| `Window<desktoptable.window>`                                     | `DesktopWindow</api/user_interface/desktop/desktopwindow>`                         | ✓         |        |

## Methods

<div class="rst-class">

table-centered_column_4

</div>

| Name                                                                                            | Parameters                                                                                                                                                                                                                                                                                                                                                                                                        | Returns                                                              | Shared |
|-------------------------------------------------------------------------------------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|----------------------------------------------------------------------|--------|
| `AcceptFileDrop<desktoptable.acceptfiledrop>`                                                   | FileType As `String</api/data_types/string>`                                                                                                                                                                                                                                                                                                                                                                      |                                                                      |        |
| `AcceptPictureDrop<desktoptable.acceptpicturedrop>`                                             |                                                                                                                                                                                                                                                                                                                                                                                                                   |                                                                      |        |
| `AcceptRawDataDrop<desktoptable.acceptrawdatadrop>`                                             | Type As `String</api/data_types/string>`                                                                                                                                                                                                                                                                                                                                                                          |                                                                      |        |
| `AcceptTextDrop<desktoptable.accepttextdrop>`                                                   |                                                                                                                                                                                                                                                                                                                                                                                                                   |                                                                      |        |
| `AddAllExpandableRows<desktoptable.addallexpandablerows>`                                       | rows As `RowSet</api/databases/rowset>`                                                                                                                                                                                                                                                                                                                                                                           |                                                                      |        |
|                                                                                                 | items() As `String</api/data_types/string>`                                                                                                                                                                                                                                                                                                                                                                       |                                                                      |        |
|                                                                                                 | items(,) As `String</api/data_types/string>`                                                                                                                                                                                                                                                                                                                                                                      |                                                                      |        |
|                                                                                                 | `ParamArray</api/language/paramarray>` item As `String</api/data_types/string>`                                                                                                                                                                                                                                                                                                                                   |                                                                      |        |
|                                                                                                 | count As `Integer</api/data_types/integer>`                                                                                                                                                                                                                                                                                                                                                                       |                                                                      |        |
| `AddAllRows<desktoptable.addallrows>`                                                           | rows As `RowSet</api/databases/rowset>`                                                                                                                                                                                                                                                                                                                                                                           |                                                                      |        |
|                                                                                                 | items() As `String</api/data_types/string>`                                                                                                                                                                                                                                                                                                                                                                       |                                                                      |        |
|                                                                                                 | items(,) As `String</api/data_types/string>`                                                                                                                                                                                                                                                                                                                                                                      |                                                                      |        |
|                                                                                                 | `ParamArray</api/language/paramarray>` item As `String</api/data_types/string>`                                                                                                                                                                                                                                                                                                                                   |                                                                      |        |
|                                                                                                 | count As `Integer</api/data_types/integer>`                                                                                                                                                                                                                                                                                                                                                                       |                                                                      |        |
| `AddColumn<desktoptable.addcolumn>`                                                             | header As `String</api/data_types/string>` = ""                                                                                                                                                                                                                                                                                                                                                                   |                                                                      |        |
| `AddColumnAt<desktoptable.addcolumnat>`                                                         | index As `Integer</api/data_types/integer>`, header As `String</api/data_types/string>` = ""                                                                                                                                                                                                                                                                                                                      |                                                                      |        |
| `AddExpandableRow<desktoptable.addexpandablerow>`                                               | items() As `String</api/data_types/string>`                                                                                                                                                                                                                                                                                                                                                                       |                                                                      |        |
|                                                                                                 | `ParamArray</api/language/paramarray>` item As `String</api/data_types/string>`                                                                                                                                                                                                                                                                                                                                   |                                                                      |        |
| `AddExpandableRowAt<desktoptable.addexpandablerowat>`                                           | row As `Integer</api/data_types/integer>`, text As `String</api/data_types/string>`, depth As `Integer</api/data_types/integer>` = 0                                                                                                                                                                                                                                                                              |                                                                      |        |
| `AddListSelectionNotificationReceiver<desktoptable.addlistselectionnotificationreceiver>`       | receiver As `ListSelectionNotificationReceiver</api/language/listselectionnotificationreceiver>`                                                                                                                                                                                                                                                                                                                  |                                                                      |        |
| `AddRow<desktoptable.addrow>`                                                                   | items() As `String</api/data_types/string>`                                                                                                                                                                                                                                                                                                                                                                       |                                                                      |        |
|                                                                                                 | `ParamArray</api/language/paramarray>` item As `String</api/data_types/string>`                                                                                                                                                                                                                                                                                                                                   |                                                                      |        |
| `AddRowAt<desktoptable.addrowat>`                                                               | row As `Integer</api/data_types/integer>`, text As `String</api/data_types/string>`, depth As `Integer</api/data_types/integer>` = 0                                                                                                                                                                                                                                                                              |                                                                      |        |
| `CellAlignmentAt<desktoptable.cellalignmentat>`                                                 | row As `Integer</api/data_types/integer>`, column As `Integer</api/data_types/integer>`                                                                                                                                                                                                                                                                                                                           | `DesktopTable.Alignments<desktoptable.alignments>`                   |        |
|                                                                                                 | row As `Integer</api/data_types/integer>`, column As `Integer</api/data_types/integer>`, `Assigns</api/language/assigns>` value As `DesktopTable.Alignments<desktoptable.alignments>`                                                                                                                                                                                                                             |                                                                      |        |
| `CellAlignmentOffsetAt<desktoptable.cellalignmentoffsetat>`                                     | row As `Integer</api/data_types/integer>`, column As `Integer</api/data_types/integer>`                                                                                                                                                                                                                                                                                                                           | `Integer</api/data_types/integer>`                                   |        |
|                                                                                                 | row As `Integer</api/data_types/integer>`, column As `Integer</api/data_types/integer>`, `Assigns</api/language/assigns>` value As `Integer</api/data_types/integer>`                                                                                                                                                                                                                                             |                                                                      |        |
| `CellBoldAt<desktoptable.cellboldat>`                                                           | row As `Integer</api/data_types/integer>`, column As `Integer</api/data_types/integer>`                                                                                                                                                                                                                                                                                                                           | `Boolean</api/data_types/boolean>`                                   |        |
|                                                                                                 | row As `Integer</api/data_types/integer>`, column As `Integer</api/data_types/integer>`, `Assigns</api/language/assigns>` value As `Boolean</api/data_types/boolean>`                                                                                                                                                                                                                                             |                                                                      |        |
| `CellBorderColorAt<desktoptable.cellbordercolorat>`                                             | row As `Integer</api/data_types/integer>`, column As `Integer</api/data_types/integer>`                                                                                                                                                                                                                                                                                                                           | `ColorGroup</api/graphics/colorgroup>`                               |        |
|                                                                                                 | row As `Integer</api/data_types/integer>`, column As `Integer</api/data_types/integer>`, `Assigns</api/language/assigns>` value As `ColorGroup</api/graphics/colorgroup>`                                                                                                                                                                                                                                         |                                                                      |        |
| `CellBoundsAt<desktoptable.cellboundsat>`                                                       | row As `Integer</api/data_types/integer>`, column As `Integer</api/data_types/integer>`                                                                                                                                                                                                                                                                                                                           | `Rect</api/graphics/rect>`                                           |        |
| `CellCheckBoxEnabledAt<desktoptable.cellcheckboxenabledat>`                                     | row As `Integer</api/data_types/integer>`, column As `Integer</api/data_types/integer>`                                                                                                                                                                                                                                                                                                                           | `Boolean</api/data_types/boolean>`                                   |        |
|                                                                                                 | row As `Integer</api/data_types/integer>`, column As `Integer</api/data_types/integer>`, `Assigns</api/language/assigns>` value As `Boolean</api/data_types/boolean>`                                                                                                                                                                                                                                             |                                                                      |        |
| `CellCheckBoxStateAt<desktoptable.cellcheckboxstateat>`                                         | row As `Integer</api/data_types/integer>`, column As `Integer</api/data_types/integer>`                                                                                                                                                                                                                                                                                                                           | `DesktopCheckBox.VisualStates<desktopcheckbox.visualstates>`         |        |
|                                                                                                 | row As `Integer</api/data_types/integer>`, column As `Integer</api/data_types/integer>`, `Assigns</api/language/assigns>` value As `DesktopCheckBox.VisualStates<desktopcheckbox.visualstates>`                                                                                                                                                                                                                   |                                                                      |        |
| `CellCheckBoxValueAt<desktoptable.cellcheckboxvalueat>`                                         | row As `Integer</api/data_types/integer>`, column As `Integer</api/data_types/integer>`                                                                                                                                                                                                                                                                                                                           | `Boolean</api/data_types/boolean>`                                   |        |
|                                                                                                 | row As `Integer</api/data_types/integer>`, column As `Integer</api/data_types/integer>`, `Assigns</api/language/assigns>` value As `Boolean</api/data_types/boolean>`                                                                                                                                                                                                                                             |                                                                      |        |
| `CellIsMerged<desktoptable.cellismerged>`                                                       | row As `Integer</api/data_types/integer>`, column As `Integer</api/data_types/integer>`                                                                                                                                                                                                                                                                                                                           | `Boolean</api/data_types/boolean>`                                   |        |
| `CellItalicAt<desktoptable.cellitalicat>`                                                       | row As `Integer</api/data_types/integer>`, column As `Integer</api/data_types/integer>`                                                                                                                                                                                                                                                                                                                           | `Boolean</api/data_types/boolean>`                                   |        |
|                                                                                                 | row As `Integer</api/data_types/integer>`, column As `Integer</api/data_types/integer>`, `Assigns</api/language/assigns>` value As `Boolean</api/data_types/boolean>`                                                                                                                                                                                                                                             |                                                                      |        |
| `CellMergeBounds<desktoptable.cellmergebounds>`                                                 | row As `Integer</api/data_types/integer>`, column As `Integer</api/data_types/integer>`, `ByRef</api/language/byref>` anchorRow As `Integer</api/data_types/integer>`, `ByRef</api/language/byref>` anchorColumn As `Integer</api/data_types/integer>`, `ByRef</api/language/byref>` rowSpan As `Integer</api/data_types/integer>`, `ByRef</api/language/byref>` columnSpan As `Integer</api/data_types/integer>` | `Boolean</api/data_types/boolean>`                                   |        |
| `CellProgressBarMaximumValueAt<desktoptable.cellprogressbarmaximumvalueat>`                     | row As `Integer</api/data_types/integer>`, column As `Integer</api/data_types/integer>`                                                                                                                                                                                                                                                                                                                           | `Double</api/data_types/double>`                                     |        |
|                                                                                                 | row As `Integer</api/data_types/integer>`, column As `Integer</api/data_types/integer>`, `Assigns</api/language/assigns>` value As `Double</api/data_types/double>`                                                                                                                                                                                                                                               |                                                                      |        |
| `CellProgressBarValueAt<desktoptable.cellprogressbarvalueat>`                                   | row As `Integer</api/data_types/integer>`, column As `Integer</api/data_types/integer>`                                                                                                                                                                                                                                                                                                                           | `Double</api/data_types/double>`                                     |        |
|                                                                                                 | row As `Integer</api/data_types/integer>`, column As `Integer</api/data_types/integer>`, `Assigns</api/language/assigns>` value As `Double</api/data_types/double>`                                                                                                                                                                                                                                               |                                                                      |        |
| `CellTagAt<desktoptable.celltagat>`                                                             | row As `Integer</api/data_types/integer>`, column As `Integer</api/data_types/integer>`                                                                                                                                                                                                                                                                                                                           | `Variant</api/data_types/variant>`                                   |        |
|                                                                                                 | row As `Integer</api/data_types/integer>`, column As `Integer</api/data_types/integer>`, `Assigns</api/language/assigns>` value As `Variant</api/data_types/variant>`                                                                                                                                                                                                                                             |                                                                      |        |
| `CellTextAt<desktoptable.celltextat>`                                                           | row As `Integer</api/data_types/integer>`, column As `Integer</api/data_types/integer>` = 0                                                                                                                                                                                                                                                                                                                       | `String</api/data_types/string>`                                     |        |
|                                                                                                 | row As `Integer</api/data_types/integer>`, column As `Integer</api/data_types/integer>` = 0, `Assigns</api/language/assigns>` value As `String</api/data_types/string>`                                                                                                                                                                                                                                           |                                                                      |        |
| `CellTooltipAt<desktoptable.celltooltipat>`                                                     | row As `Integer</api/data_types/integer>`, column As `Integer</api/data_types/integer>`                                                                                                                                                                                                                                                                                                                           | `String</api/data_types/string>`                                     |        |
|                                                                                                 | row As `Integer</api/data_types/integer>`, column As `Integer</api/data_types/integer>`, `Assigns</api/language/assigns>` value As `String</api/data_types/string>`                                                                                                                                                                                                                                               |                                                                      |        |
| `CellTypeAt<desktoptable.celltypeat>`                                                           | row As `Integer</api/data_types/integer>`, column As `Integer</api/data_types/integer>`                                                                                                                                                                                                                                                                                                                           | `DesktopTable.CellTypes<desktoptable.celltypes>`                     |        |
|                                                                                                 | row As `Integer</api/data_types/integer>`, column As `Integer</api/data_types/integer>`, `Assigns</api/language/assigns>` value As `DesktopTable.CellTypes<desktoptable.celltypes>`                                                                                                                                                                                                                               |                                                                      |        |
| `CellUnderlineAt<desktoptable.cellunderlineat>`                                                 | row As `Integer</api/data_types/integer>`, column As `Integer</api/data_types/integer>`                                                                                                                                                                                                                                                                                                                           | `Boolean</api/data_types/boolean>`                                   |        |
|                                                                                                 | row As `Integer</api/data_types/integer>`, column As `Integer</api/data_types/integer>`, `Assigns</api/language/assigns>` value As `Boolean</api/data_types/boolean>`                                                                                                                                                                                                                                             |                                                                      |        |
| `Close<desktoptable.close>`                                                                     |                                                                                                                                                                                                                                                                                                                                                                                                                   |                                                                      |        |
| `CollapseAllRows<desktoptable.collapseallrows>`                                                 |                                                                                                                                                                                                                                                                                                                                                                                                                   |                                                                      |        |
| `ColumnAlignmentAt<desktoptable.columnalignmentat>`                                             | column As `Integer</api/data_types/integer>`                                                                                                                                                                                                                                                                                                                                                                      | `DesktopTable.Alignments<desktoptable.alignments>`                   |        |
|                                                                                                 | column As `Integer</api/data_types/integer>`, `Assigns</api/language/assigns>` value As `DesktopTable.Alignments<desktoptable.alignments>`                                                                                                                                                                                                                                                                        |                                                                      |        |
| `ColumnAlignmentOffsetAt<desktoptable.columnalignmentoffsetat>`                                 | column As `Integer</api/data_types/integer>`                                                                                                                                                                                                                                                                                                                                                                      | `Integer</api/data_types/integer>`                                   |        |
|                                                                                                 | column As `Integer</api/data_types/integer>`, `Assigns</api/language/assigns>` value As `Integer</api/data_types/integer>`                                                                                                                                                                                                                                                                                        |                                                                      |        |
| `ColumnAttributesAt<desktoptable.columnattributesat>`                                           | column As `Integer</api/data_types/integer>`                                                                                                                                                                                                                                                                                                                                                                      | `DesktopTableColumn</api/user_interface/desktop/desktoptablecolumn>` |        |
|                                                                                                 | column As `Integer</api/data_types/integer>`, `Assigns</api/language/assigns>` value As `DesktopTableColumn</api/user_interface/desktop/desktoptablecolumn>`                                                                                                                                                                                                                                                      |                                                                      |        |
| `ColumnFromXY<desktoptable.columnfromxy>`                                                       | x As `Integer</api/data_types/integer>`, y As `Integer</api/data_types/integer>`                                                                                                                                                                                                                                                                                                                                  | `Integer</api/data_types/integer>`                                   |        |
| `ColumnHeaderAt<desktoptable.columnheaderat>`                                                   | index As `Integer</api/data_types/integer>`                                                                                                                                                                                                                                                                                                                                                                       | `String</api/data_types/string>`                                     |        |
|                                                                                                 | index As `Integer</api/data_types/integer>`, `Assigns</api/language/assigns>` value As `String</api/data_types/string>`                                                                                                                                                                                                                                                                                           |                                                                      |        |
| `Columns<desktoptable.columns>`                                                                 |                                                                                                                                                                                                                                                                                                                                                                                                                   | `Iterable</api/language/iterable>`                                   |        |
| `ColumnSortDirectionAt<desktoptable.columnsortdirectionat>`                                     | column As `Integer</api/data_types/integer>`                                                                                                                                                                                                                                                                                                                                                                      | `DesktopTable.SortDirections<desktoptable.sortdirections>`           |        |
|                                                                                                 | column As `Integer</api/data_types/integer>`, `Assigns</api/language/assigns>` value As `DesktopTable.SortDirections<desktoptable.sortdirections>`                                                                                                                                                                                                                                                                |                                                                      |        |
| `ColumnSortTypeAt<desktoptable.columnsorttypeat>`                                               | column As `Integer</api/data_types/integer>`                                                                                                                                                                                                                                                                                                                                                                      | `DesktopTable.SortTypes<desktoptable.sorttypes>`                     |        |
|                                                                                                 | column As `Integer</api/data_types/integer>`, `Assigns</api/language/assigns>` value As `DesktopTable.SortTypes<desktoptable.sorttypes>`                                                                                                                                                                                                                                                                          |                                                                      |        |
| `ColumnTagAt<desktoptable.columntagat>`                                                         | column As `Integer</api/data_types/integer>`                                                                                                                                                                                                                                                                                                                                                                      | `Variant</api/data_types/variant>`                                   |        |
|                                                                                                 | column As `Integer</api/data_types/integer>`, `Assigns</api/language/assigns>` value As `Variant</api/data_types/variant>`                                                                                                                                                                                                                                                                                        |                                                                      |        |
| `ColumnTypeAt<desktoptable.columntypeat>`                                                       | column As `Integer</api/data_types/integer>`                                                                                                                                                                                                                                                                                                                                                                      | `DesktopTable.CellTypes<desktoptable.celltypes>`                     |        |
|                                                                                                 | column As `Integer</api/data_types/integer>`, `Assigns</api/language/assigns>` value As `DesktopTable.CellTypes<desktoptable.celltypes>`                                                                                                                                                                                                                                                                          |                                                                      |        |
| `ColumnVisibleAt<desktoptable.columnvisibleat>`                                                 | index As `Integer</api/data_types/integer>`                                                                                                                                                                                                                                                                                                                                                                       | `Boolean</api/data_types/boolean>`                                   |        |
|                                                                                                 | index As `Integer</api/data_types/integer>`, `Assigns</api/language/assigns>` value As `Boolean</api/data_types/boolean>`                                                                                                                                                                                                                                                                                         |                                                                      |        |
| `ContainerForCellAt<desktoptable.containerforcellat>`                                           | row As `Integer</api/data_types/integer>`, column As `Integer</api/data_types/integer>`                                                                                                                                                                                                                                                                                                                           | `DesktopContainer</api/user_interface/desktop/desktopcontainer>`     |        |
| `DrawInto<desktoptable.drawinto>`                                                               | g As `Graphics</api/graphics/graphics>`, left As `Integer</api/data_types/integer>`, top As `Integer</api/data_types/integer>`                                                                                                                                                                                                                                                                                    |                                                                      |        |
| `EditCellAt<desktoptable.editcellat>`                                                           | row As `Integer</api/data_types/integer>`, column As `Integer</api/data_types/integer>`                                                                                                                                                                                                                                                                                                                           |                                                                      |        |
| `ExpandAllRows<desktoptable.expandallrows>`                                                     |                                                                                                                                                                                                                                                                                                                                                                                                                   |                                                                      |        |
| `MergeCells<desktoptable.mergecells>`                                                           | row As `Integer</api/data_types/integer>`, column As `Integer</api/data_types/integer>`, rowSpan As `Integer</api/data_types/integer>`, columnSpan As `Integer</api/data_types/integer>`                                                                                                                                                                                                                          |                                                                      |        |
| `Open<desktoptable.open>`                                                                       | file As `FolderItem</api/files/folderitem>`, delimiter As `String</api/data_types/string>` = ",", importHeaders As `Boolean</api/data_types/boolean>` = `True</api/language/true>`                                                                                                                                                                                                                                |                                                                      |        |
| `PressColumnHeaderAt<desktoptable.presscolumnheaderat>`                                         | column As `Integer</api/data_types/integer>`                                                                                                                                                                                                                                                                                                                                                                      |                                                                      |        |
| `Refresh<desktoptable.refresh>`                                                                 | immediately As `Boolean</api/data_types/boolean>` = `False</api/language/false>`                                                                                                                                                                                                                                                                                                                                  |                                                                      |        |
|                                                                                                 | x As `Integer</api/data_types/integer>`, y As `Integer</api/data_types/integer>`, width As `Integer</api/data_types/integer>`, height As `Integer</api/data_types/integer>`, immediately As `Boolean</api/data_types/boolean>` = `False</api/language/false>`                                                                                                                                                     |                                                                      |        |
| `RefreshCellAt<desktoptable.refreshcellat>`                                                     | row As `Integer</api/data_types/integer>`, column As `Integer</api/data_types/integer>`                                                                                                                                                                                                                                                                                                                           |                                                                      |        |
| `ReloadFromDataSource<desktoptable.reloadfromdatasource>`                                       |                                                                                                                                                                                                                                                                                                                                                                                                                   |                                                                      |        |
| `RemoveAllColumns<desktoptable.removeallcolumns>`                                               |                                                                                                                                                                                                                                                                                                                                                                                                                   |                                                                      |        |
| `RemoveAllMerges<desktoptable.removeallmerges>`                                                 |                                                                                                                                                                                                                                                                                                                                                                                                                   |                                                                      |        |
| `RemoveAllRows<desktoptable.removeallrows>`                                                     |                                                                                                                                                                                                                                                                                                                                                                                                                   |                                                                      |        |
| `RemoveColumnAt<desktoptable.removecolumnat>`                                                   | index As `Integer</api/data_types/integer>`                                                                                                                                                                                                                                                                                                                                                                       |                                                                      |        |
| `RemoveListSelectionNotificationReceiver<desktoptable.removelistselectionnotificationreceiver>` | receiver As `ListSelectionNotificationReceiver</api/language/listselectionnotificationreceiver>`                                                                                                                                                                                                                                                                                                                  |                                                                      |        |
| `RemoveRowAt<desktoptable.removerowat>`                                                         | index As `Integer</api/data_types/integer>`                                                                                                                                                                                                                                                                                                                                                                       |                                                                      |        |
| `ReusableContainer<desktoptable.reusablecontainer>`                                             | identifier As `String</api/data_types/string>`                                                                                                                                                                                                                                                                                                                                                                    | `DesktopContainer</api/user_interface/desktop/desktopcontainer>`     |        |
| `RowAt<desktoptable.rowat>`                                                                     | row As `Integer</api/data_types/integer>`                                                                                                                                                                                                                                                                                                                                                                         | `DesktopTableRow</api/user_interface/desktop/desktoptablerow>`       |        |
| `RowDepthAt<desktoptable.rowdepthat>`                                                           | row As `Integer</api/data_types/integer>`                                                                                                                                                                                                                                                                                                                                                                         | `Integer</api/data_types/integer>`                                   |        |
| `RowExpandableAt<desktoptable.rowexpandableat>`                                                 | row As `Integer</api/data_types/integer>`                                                                                                                                                                                                                                                                                                                                                                         | `Boolean</api/data_types/boolean>`                                   |        |
|                                                                                                 | row As `Integer</api/data_types/integer>`, `Assigns</api/language/assigns>` value As `Boolean</api/data_types/boolean>`                                                                                                                                                                                                                                                                                           |                                                                      |        |
| `RowExpandedAt<desktoptable.rowexpandedat>`                                                     | row As `Integer</api/data_types/integer>`                                                                                                                                                                                                                                                                                                                                                                         | `Boolean</api/data_types/boolean>`                                   |        |
|                                                                                                 | row As `Integer</api/data_types/integer>`, `Assigns</api/language/assigns>` value As `Boolean</api/data_types/boolean>`                                                                                                                                                                                                                                                                                           |                                                                      |        |
| `RowForContainer<desktoptable.rowforcontainer>`                                                 | container As `DesktopContainer</api/user_interface/desktop/desktopcontainer>`                                                                                                                                                                                                                                                                                                                                     | `Integer</api/data_types/integer>`                                   |        |
| `RowFromXY<desktoptable.rowfromxy>`                                                             | x As `Integer</api/data_types/integer>`, y As `Integer</api/data_types/integer>`                                                                                                                                                                                                                                                                                                                                  | `Integer</api/data_types/integer>`                                   |        |
| `RowHeightAt<desktoptable.rowheightat>`                                                         | row As `Integer</api/data_types/integer>`                                                                                                                                                                                                                                                                                                                                                                         | `Double</api/data_types/double>`                                     |        |
|                                                                                                 | row As `Integer</api/data_types/integer>`, `Assigns</api/language/assigns>` height As `Double</api/data_types/double>`                                                                                                                                                                                                                                                                                            |                                                                      |        |
| `RowImageAt<desktoptable.rowimageat>`                                                           | index As `Integer</api/data_types/integer>`                                                                                                                                                                                                                                                                                                                                                                       | `Picture</api/graphics/picture>`                                     |        |
|                                                                                                 | index As `Integer</api/data_types/integer>`, `Assigns</api/language/assigns>` value As `Picture</api/graphics/picture>`                                                                                                                                                                                                                                                                                           |                                                                      |        |
| `Rows<desktoptable.rows>`                                                                       |                                                                                                                                                                                                                                                                                                                                                                                                                   | `Iterable</api/language/iterable>`                                   |        |
| `RowSelectedAt<desktoptable.rowselectedat>`                                                     | index As `Integer</api/data_types/integer>`                                                                                                                                                                                                                                                                                                                                                                       | `Boolean</api/data_types/boolean>`                                   |        |
|                                                                                                 | index As `Integer</api/data_types/integer>`, `Assigns</api/language/assigns>` value As `Boolean</api/data_types/boolean>`                                                                                                                                                                                                                                                                                         |                                                                      |        |
| `RowTagAt<desktoptable.rowtagat>`                                                               | row As `Integer</api/data_types/integer>`                                                                                                                                                                                                                                                                                                                                                                         | `Variant</api/data_types/variant>`                                   |        |
|                                                                                                 | row As `Integer</api/data_types/integer>`, `Assigns</api/language/assigns>` value As `Variant</api/data_types/variant>`                                                                                                                                                                                                                                                                                           |                                                                      |        |
| `Save<desktoptable.save>`                                                                       | file As `FolderItem</api/files/folderitem>`, delimiter As `String</api/data_types/string>` = ",", exportHeaders As `Boolean</api/data_types/boolean>` = `True</api/language/true>`                                                                                                                                                                                                                                |                                                                      |        |
| `ScrollTo<desktoptable.scrollto>`                                                               | row As `Integer</api/data_types/integer>`, column As `Integer</api/data_types/integer>` = 0                                                                                                                                                                                                                                                                                                                       |                                                                      |        |
| `SectionHeaderAt<desktoptable.sectionheaderat>`                                                 | row As `Integer</api/data_types/integer>`                                                                                                                                                                                                                                                                                                                                                                         | `Boolean</api/data_types/boolean>`                                   |        |
|                                                                                                 | row As `Integer</api/data_types/integer>`, `Assigns</api/language/assigns>` value As `Boolean</api/data_types/boolean>`                                                                                                                                                                                                                                                                                           |                                                                      |        |
| `SelectAll<desktoptable.selectall>`                                                             |                                                                                                                                                                                                                                                                                                                                                                                                                   |                                                                      |        |
| `SetFocus<desktoptable.setfocus>`                                                               |                                                                                                                                                                                                                                                                                                                                                                                                                   |                                                                      |        |
| `Sort<desktoptable.sort>`                                                                       |                                                                                                                                                                                                                                                                                                                                                                                                                   |                                                                      |        |
| `UnmergeCellsAt<desktoptable.unmergecellsat>`                                                   | row As `Integer</api/data_types/integer>`, column As `Integer</api/data_types/integer>`                                                                                                                                                                                                                                                                                                                           |                                                                      |        |

## Events

<div class="rst-class">

table-centered_column_4

</div>

| Name                                                                  | Parameters                                                                                                                                                                                                                                                                                                                                                                                                                                       | Returns                                                                      |
|-----------------------------------------------------------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|------------------------------------------------------------------------------|
| `Activated<desktoptable.activated>`                                   |                                                                                                                                                                                                                                                                                                                                                                                                                                                  |                                                                              |
| `ApplyLeadingActionsForRow<desktoptable.applyleadingactionsforrow>`   | row As `Integer</api/data_types/integer>`                                                                                                                                                                                                                                                                                                                                                                                                        | `DesktopTableRowAction()</api/user_interface/desktop/desktoptablerowaction>` |
| `ApplyTrailingActionsForRow<desktoptable.applytrailingactionsforrow>` | row As `Integer</api/data_types/integer>`                                                                                                                                                                                                                                                                                                                                                                                                        | `DesktopTableRowAction()</api/user_interface/desktop/desktoptablerowaction>` |
| `CellAction<desktoptable.cellaction>`                                 | row As `Integer</api/data_types/integer>`, column As `Integer</api/data_types/integer>`                                                                                                                                                                                                                                                                                                                                                          |                                                                              |
| `CellFocusLost<desktoptable.cellfocuslost>`                           | row As `Integer</api/data_types/integer>`, column As `Integer</api/data_types/integer>`                                                                                                                                                                                                                                                                                                                                                          |                                                                              |
| `CellFocusReceived<desktoptable.cellfocusreceived>`                   | row As `Integer</api/data_types/integer>`, column As `Integer</api/data_types/integer>`                                                                                                                                                                                                                                                                                                                                                          |                                                                              |
| `CellKeyDown<desktoptable.cellkeydown>`                               | row As `Integer</api/data_types/integer>`, column As `Integer</api/data_types/integer>`, key As `String</api/data_types/string>`                                                                                                                                                                                                                                                                                                                 | `Boolean</api/data_types/boolean>`                                           |
| `CellPressed<desktoptable.cellpressed>`                               | row As `Integer</api/data_types/integer>`, column As `Integer</api/data_types/integer>`, x As `Integer</api/data_types/integer>`, y As `Integer</api/data_types/integer>`                                                                                                                                                                                                                                                                        | `Boolean</api/data_types/boolean>`                                           |
| `CellTextChanged<desktoptable.celltextchanged>`                       | row As `Integer</api/data_types/integer>`, column As `Integer</api/data_types/integer>`                                                                                                                                                                                                                                                                                                                                                          |                                                                              |
| `Closing<desktoptable.closing>`                                       |                                                                                                                                                                                                                                                                                                                                                                                                                                                  |                                                                              |
| `ColumnHeaderPressed<desktoptable.columnheaderpressed>`               | column As `Integer</api/data_types/integer>`                                                                                                                                                                                                                                                                                                                                                                                                     | `Boolean</api/data_types/boolean>`                                           |
| `ColumnReordered<desktoptable.columnreordered>`                       | fromColumn As `Integer</api/data_types/integer>`, toColumn As `Integer</api/data_types/integer>`                                                                                                                                                                                                                                                                                                                                                 |                                                                              |
| `ColumnReordering<desktoptable.columnreordering>`                     | fromColumn As `Integer</api/data_types/integer>`, toColumn As `Integer</api/data_types/integer>`                                                                                                                                                                                                                                                                                                                                                 | `Boolean</api/data_types/boolean>`                                           |
| `ColumnResized<desktoptable.columnresized>`                           | column As `Integer</api/data_types/integer>`, width As `Integer</api/data_types/integer>`                                                                                                                                                                                                                                                                                                                                                        |                                                                              |
| `ColumnResizing<desktoptable.columnresizing>`                         | column As `Integer</api/data_types/integer>`, width As `Integer</api/data_types/integer>`                                                                                                                                                                                                                                                                                                                                                        |                                                                              |
| `ColumnSorted<desktoptable.columnsorted>`                             | column As `Integer</api/data_types/integer>`                                                                                                                                                                                                                                                                                                                                                                                                     | `Boolean</api/data_types/boolean>`                                           |
| `ConstructContextualMenu<desktoptable.constructcontextualmenu>`       | base As `DesktopMenuItem</api/user_interface/desktop/desktopmenuitem>`, x As `Integer</api/data_types/integer>`, y As `Integer</api/data_types/integer>`                                                                                                                                                                                                                                                                                         | `Boolean</api/data_types/boolean>`                                           |
| `ContainerAt<desktoptable.containerat>`                               | row As `Integer</api/data_types/integer>`, column As `Integer</api/data_types/integer>`                                                                                                                                                                                                                                                                                                                                                          | `DesktopContainer</api/user_interface/desktop/desktopcontainer>`             |
| `ContainerRemovedAt<desktoptable.containerremovedat>`                 | row As `Integer</api/data_types/integer>`, column As `Integer</api/data_types/integer>`, container As `DesktopContainer</api/user_interface/desktop/desktopcontainer>`                                                                                                                                                                                                                                                                           | `Boolean</api/data_types/boolean>`                                           |
| `ContextualMenuItemSelected<desktoptable.contextualmenuitemselected>` | selectedItem As `DesktopMenuItem</api/user_interface/desktop/desktopmenuitem>`                                                                                                                                                                                                                                                                                                                                                                   | `Boolean</api/data_types/boolean>`                                           |
| `Deactivated<desktoptable.deactivated>`                               |                                                                                                                                                                                                                                                                                                                                                                                                                                                  |                                                                              |
| `DoublePressed<desktoptable.doublepressed>`                           | row As `Integer</api/data_types/integer>`, column As `Integer</api/data_types/integer>`                                                                                                                                                                                                                                                                                                                                                          |                                                                              |
| `DragEnter<desktoptable.dragenter>`                                   | obj As `DragItem</api/user_interface/desktop/dragitem>`, action As `DragItem.Types<dragitem.types>`                                                                                                                                                                                                                                                                                                                                              | `Boolean</api/data_types/boolean>`                                           |
| `DragExit<desktoptable.dragexit>`                                     | obj As `DragItem</api/user_interface/desktop/dragitem>`, action As `DragItem.Types<dragitem.types>`                                                                                                                                                                                                                                                                                                                                              |                                                                              |
| `DragOver<desktoptable.dragover>`                                     | x As `Integer</api/data_types/integer>`, y As `Integer</api/data_types/integer>`, obj As `DragItem</api/user_interface/desktop/dragitem>`, action As `DragItem.Types<dragitem.types>`                                                                                                                                                                                                                                                            | `Boolean</api/data_types/boolean>`                                           |
| `DragOverRow<desktoptable.dragoverrow>`                               | x As `Integer</api/data_types/integer>`, y As `Integer</api/data_types/integer>`, obj As `DragItem</api/user_interface/desktop/dragitem>`, action As `Integer</api/data_types/integer>`, `ByRef</api/language/byref>` row As `Integer</api/data_types/integer>`, `ByRef</api/language/byref>` parentRow As `Integer</api/data_types/integer>`, `ByRef</api/language/byref>` location As `DesktopTable.DropLocations<desktoptable.droplocations>` | `Boolean</api/data_types/boolean>`                                           |
| `DragReorderRows<desktoptable.dragreorderrows>`                       | newPosition As `Integer</api/data_types/integer>`, parentRow As `Integer</api/data_types/integer>`                                                                                                                                                                                                                                                                                                                                               | `Boolean</api/data_types/boolean>`                                           |
| `DragRow<desktoptable.dragrow>`                                       | drag As `DragItem</api/user_interface/desktop/dragitem>`, row As `Integer</api/data_types/integer>`                                                                                                                                                                                                                                                                                                                                              | `Boolean</api/data_types/boolean>`                                           |
| `DropObject<desktoptable.dropobject>`                                 | obj As `DragItem</api/user_interface/desktop/dragitem>`, action As `DragItem.Types<dragitem.types>`                                                                                                                                                                                                                                                                                                                                              |                                                                              |
| `DropObjectOnRow<desktoptable.dropobjectonrow>`                       | x As `Integer</api/data_types/integer>`, y As `Integer</api/data_types/integer>`, obj As `DragItem</api/user_interface/desktop/dragitem>`, action As `Integer</api/data_types/integer>`, row As `Integer</api/data_types/integer>`, parentRow As `Integer</api/data_types/integer>`, location As `DesktopTable.DropLocations<desktoptable.droplocations>`                                                                                        |                                                                              |
| `FocusLost<desktoptable.focuslost>`                                   |                                                                                                                                                                                                                                                                                                                                                                                                                                                  |                                                                              |
| `FocusReceived<desktoptable.focusreceived>`                           |                                                                                                                                                                                                                                                                                                                                                                                                                                                  |                                                                              |
| `KeyDown<desktoptable.keydown>`                                       | key As `String</api/data_types/string>`                                                                                                                                                                                                                                                                                                                                                                                                          | `Boolean</api/data_types/boolean>`                                           |
| `KeyUp<desktoptable.keyup>`                                           | key As `String</api/data_types/string>`                                                                                                                                                                                                                                                                                                                                                                                                          |                                                                              |
| `MenuBarSelected<desktoptable.menubarselected>`                       |                                                                                                                                                                                                                                                                                                                                                                                                                                                  |                                                                              |
| `MouseDown<desktoptable.mousedown>`                                   | x As `Integer</api/data_types/integer>`, y As `Integer</api/data_types/integer>`                                                                                                                                                                                                                                                                                                                                                                 | `Boolean</api/data_types/boolean>`                                           |
| `MouseDrag<desktoptable.mousedrag>`                                   | x As `Integer</api/data_types/integer>`, y As `Integer</api/data_types/integer>`                                                                                                                                                                                                                                                                                                                                                                 |                                                                              |
| `MouseEnter<desktoptable.mouseenter>`                                 |                                                                                                                                                                                                                                                                                                                                                                                                                                                  |                                                                              |
| `MouseExit<desktoptable.mouseexit>`                                   |                                                                                                                                                                                                                                                                                                                                                                                                                                                  |                                                                              |
| `MouseMove<desktoptable.mousemove>`                                   | x As `Integer</api/data_types/integer>`, y As `Integer</api/data_types/integer>`                                                                                                                                                                                                                                                                                                                                                                 |                                                                              |
| `MouseUp<desktoptable.mouseup>`                                       | x As `Integer</api/data_types/integer>`, y As `Integer</api/data_types/integer>`                                                                                                                                                                                                                                                                                                                                                                 |                                                                              |
| `MouseWheel<desktoptable.mousewheel>`                                 | x As `Integer</api/data_types/integer>`, y As `Integer</api/data_types/integer>`, deltaX As `Integer</api/data_types/integer>`, deltaY As `Integer</api/data_types/integer>`                                                                                                                                                                                                                                                                     | `Boolean</api/data_types/boolean>`                                           |
| `Opening<desktoptable.opening>`                                       |                                                                                                                                                                                                                                                                                                                                                                                                                                                  |                                                                              |
| `PaintBackground<desktoptable.paintbackground>`                       | g As `Graphics</api/graphics/graphics>`                                                                                                                                                                                                                                                                                                                                                                                                          |                                                                              |
| `PaintCellBackground<desktoptable.paintcellbackground>`               | g As `Graphics</api/graphics/graphics>`, row As `Integer</api/data_types/integer>`, column As `Integer</api/data_types/integer>`                                                                                                                                                                                                                                                                                                                 | `Boolean</api/data_types/boolean>`                                           |
| `PaintCellText<desktoptable.paintcelltext>`                           | g As `Graphics</api/graphics/graphics>`, row As `Integer</api/data_types/integer>`, column As `Integer</api/data_types/integer>`, x As `Integer</api/data_types/integer>`, y As `Integer</api/data_types/integer>`                                                                                                                                                                                                                               | `Boolean</api/data_types/boolean>`                                           |
| `PaintDisclosureWidget<desktoptable.paintdisclosurewidget>`           | g As `Graphics</api/graphics/graphics>`, row As `Integer</api/data_types/integer>`, `ByRef</api/language/byref>` x As `Integer</api/data_types/integer>`, `ByRef</api/language/byref>` y As `Integer</api/data_types/integer>`, `ByRef</api/language/byref>` width As `Integer</api/data_types/integer>`, `ByRef</api/language/byref>` height As `Integer</api/data_types/integer>`                                                              | `Boolean</api/data_types/boolean>`                                           |
| `PaintHeaderBackground<desktoptable.paintheaderbackground>`           | g As `Graphics</api/graphics/graphics>`, column As `Integer</api/data_types/integer>`                                                                                                                                                                                                                                                                                                                                                            | `Boolean</api/data_types/boolean>`                                           |
| `PaintHeaderContent<desktoptable.paintheadercontent>`                 | g As `Graphics</api/graphics/graphics>`, column As `Integer</api/data_types/integer>`, x As `Integer</api/data_types/integer>`, y As `Integer</api/data_types/integer>`                                                                                                                                                                                                                                                                          | `Boolean</api/data_types/boolean>`                                           |
| `PaintRowAction<desktoptable.paintrowaction>`                         | g As `Graphics</api/graphics/graphics>`, row As `Integer</api/data_types/integer>`, action As `DesktopTableRowAction</api/user_interface/desktop/desktoptablerowaction>`, pressed As `Boolean</api/data_types/boolean>`                                                                                                                                                                                                                          | `Boolean</api/data_types/boolean>`                                           |
| `PaintSortWidget<desktoptable.paintsortwidget>`                       | g As `Graphics</api/graphics/graphics>`, column As `Integer</api/data_types/integer>`, `ByRef</api/language/byref>` x As `Integer</api/data_types/integer>`, `ByRef</api/language/byref>` y As `Integer</api/data_types/integer>`, `ByRef</api/language/byref>` width As `Integer</api/data_types/integer>`, `ByRef</api/language/byref>` height As `Integer</api/data_types/integer>`                                                           | `Boolean</api/data_types/boolean>`                                           |
| `RowActionSelected<desktoptable.rowactionselected>`                   | row As `Integer</api/data_types/integer>`, action As `DesktopTableRowAction</api/user_interface/desktop/desktoptablerowaction>`                                                                                                                                                                                                                                                                                                                  |                                                                              |
| `RowCollapsed<desktoptable.rowcollapsed>`                             | row As `Integer</api/data_types/integer>`                                                                                                                                                                                                                                                                                                                                                                                                        |                                                                              |
| `RowComparison<desktoptable.rowcomparison>`                           | row1 As `Integer</api/data_types/integer>`, row2 As `Integer</api/data_types/integer>`, column As `Integer</api/data_types/integer>`, `ByRef</api/language/byref>` result As `Integer</api/data_types/integer>`                                                                                                                                                                                                                                  | `Boolean</api/data_types/boolean>`                                           |
| `RowExpanded<desktoptable.rowexpanded>`                               | row As `Integer</api/data_types/integer>`                                                                                                                                                                                                                                                                                                                                                                                                        |                                                                              |
| `Scrolled<desktoptable.scrolled>`                                     | x As `Integer</api/data_types/integer>`, y As `Integer</api/data_types/integer>`                                                                                                                                                                                                                                                                                                                                                                 |                                                                              |
| `SelectionChanged<desktoptable.selectionchanged>`                     |                                                                                                                                                                                                                                                                                                                                                                                                                                                  |                                                                              |

## Constants

> These constants are designed to be used with some <span class="title-ref">DesktopTable</span> methods to make code more readable.
>
> | Name        | Description                                              |
> |-------------|----------------------------------------------------------|
> | AllColumns  | Sentinel for 'every column' in cell and column setters.  |
> | AllRows     | Sentinel for 'every row' in cell setters.                |
> | NoSelection | Returned by `SelectedRowIndex` when nothing is selected. |

## Enumerations

<div id="desktoptable.alignments">

<div class="rst-class">

forsearch

</div>

</div>

DesktopTable.Alignments

### Alignments

> Used to indicate how the content of a cell or column is aligned.
>
> | Enum    | Description                                                       |
> |---------|-------------------------------------------------------------------|
> | Default | The platform's default alignment, left in a left-to-right layout. |
> | Left    | The value is left-justified.                                      |
> | Center  | The value is centred.                                             |
> | Right   | The value is right-justified.                                     |
> | Decimal | The value is aligned on its decimal separator.                    |

<div id="desktoptable.celltypes">

<div class="rst-class">

forsearch

</div>

</div>

DesktopTable.CellTypes

### CellTypes

> Used to indicate what a cell contains and whether the user can edit it.
>
> | Enum        | Description                                                                        |
> |-------------|------------------------------------------------------------------------------------|
> | Default     | The cell uses the type of its column.                                              |
> | Normal      | A cell the user cannot edit directly.                                              |
> | CheckBox    | The cell shows a native checkbox.                                                  |
> | TextField   | The cell can be edited in a single-line inline editor.                             |
> | TextArea    | The cell can be edited in a multi-line inline editor.                              |
> | ProgressBar | The cell shows a native progress bar; the value comes from CellProgressBarValueAt. |
> | Container   | The cell shows a DesktopContainer, supplied by the ContainerAt event.              |

<div id="desktoptable.droplocations">

<div class="rst-class">

forsearch

</div>

</div>

DesktopTable.DropLocations

### DropLocations

> Used to indicate where on the table an object was dropped.
>
> | Enum         | Description                                                                    |
> |--------------|--------------------------------------------------------------------------------|
> | OnRow        | The drop happens on the row itself.                                            |
> | AfterRow     | The drop happens between rows, after the row given. -1 inserts above all rows. |
> | AfterAllRows | The drop happens after the last row.                                           |
> | OnControl    | The drop happens on the control as a whole, not on a particular row.           |

<div id="desktoptable.gridlinestyles">

<div class="rst-class">

forsearch

</div>

</div>

DesktopTable.GridLineStyles

### GridLineStyles

> Used to indicate which grid lines are drawn.
>
> | Enum       | Description                              |
> |------------|------------------------------------------|
> | None       | No grid lines. This is the default.      |
> | Horizontal | Horizontal grid lines only.              |
> | Vertical   | Vertical grid lines only.                |
> | Both       | Both horizontal and vertical grid lines. |

<div id="desktoptable.rowselectiontypes">

<div class="rst-class">

forsearch

</div>

</div>

DesktopTable.RowSelectionTypes

### RowSelectionTypes

> Used to indicate whether one or more rows can be selected.
>
> | Enum     | Description                                          |
> |----------|------------------------------------------------------|
> | Single   | Only one row can be selected at a time.              |
> | Multiple | Any number of rows can be selected at the same time. |

<div id="desktoptable.sortdirections">

<div class="rst-class">

forsearch

</div>

</div>

DesktopTable.SortDirections

### SortDirections

> Used to indicate whether a column sorts ascending, descending or not at all.
>
> | Enum       | Description                                                      |
> |------------|------------------------------------------------------------------|
> | Descending | The rows are sorted in reverse order.                            |
> | None       | The column is not sorted and its header shows no sort indicator. |
> | Ascending  | The rows are sorted in standard order.                           |

<div id="desktoptable.sorttypes">

<div class="rst-class">

forsearch

</div>

</div>

DesktopTable.SortTypes

### SortTypes

> Used to indicate whether the user can sort a column by its header.
>
> | Enum        | Description                                           |
> |-------------|-------------------------------------------------------|
> | Sortable    | The column header sorts the table when it is clicked. |
> | NotSortable | The column header does not sort the table.            |

## Property descriptions

<div id="desktoptable.active">

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

</div>

<div class="rst-class">

forsearch

</div>

DesktopTable.Active

**Active** As `Boolean</api/data_types/boolean>`

> Indicates whether the `control</api/user_interface/desktop/desktopuicontrol>` is active.
>
> Active is `False</api/language/false>` when the control's window is not in the foreground. When a `DesktopWindow</api/user_interface/desktop/desktopwindow>` is deactivated, its controls are automatically deactivated unless `AllowAutoDeactivate<desktopuicontrol.allowautodeactivate>` is set to `False</api/language/false>`.
>
> This property is read-only.
>
> This example reads the property:
>
> ``` xojo
> Var value As Boolean = Table1.Active
> ```

<div id="desktoptable.activetextcontrol">

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

</div>

<div class="rst-class">

forsearch

</div>

DesktopTable.ActiveTextControl

**ActiveTextControl** As `DesktopTextControl</api/user_interface/desktop/desktoptextcontrol>`

> The live inline editor (`DesktopTextField</api/user_interface/desktop/desktoptextfield>` or `DesktopTextArea</api/user_interface/desktop/desktoptextarea>`), or `Nil</api/language/nil>` when no cell is being edited.
>
> This property is read-only.
>
> This example reads the live inline editor (DesktopTextField or DesktopTextArea), or `Nil</api/language/nil>` when no cell is being edited:
>
> ``` xojo
> Var value As DesktopTextControl = Table1.ActiveTextControl
> ```

<div id="desktoptable.allowautodeactivate">

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

</div>

<div class="rst-class">

forsearch

</div>

DesktopTable.AllowAutoDeactivate

**AllowAutoDeactivate** As `Boolean</api/data_types/boolean>`

> Determines whether the control should be deactivated (on macOS) when the parent window is deactivated. The default is `True</api/language/true>`.
>
> This example sets the property:
>
> ``` xojo
> Table1.AllowAutoDeactivate = True
> ```

<div id="desktoptable.allowautohidescrollbars">

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

</div>

<div class="rst-class">

forsearch

</div>

DesktopTable.AllowAutoHideScrollbars

**AllowAutoHideScrollbars** As `Boolean</api/data_types/boolean>`

> Lets the scrollbars hide themselves when the content fits. With `False</api/language/false>` the scrollbars stay visible even when everything fits. On macOS the system setting for overlay scrollbars decides how they are drawn; the table follows a change of that setting while it is running.
>
> This example lets the scrollbars hide themselves when the content fits:
>
> ``` xojo
> Table1.AllowAutoHideScrollbars = True
> ```

<div id="desktoptable.allowcolumnreordering">

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

</div>

<div class="rst-class">

forsearch

</div>

DesktopTable.AllowColumnReordering

**AllowColumnReordering** As `Boolean</api/data_types/boolean>`

> Columns can be dragged by their header. Allows reordering columns by dragging the column headers. The user drags a column by its header and an insertion marker shows where it will land. The move is reported by `ColumnReordering<desktoptable.columnreordering>` before and `ColumnReordered<desktoptable.columnreordered>` after it, and the column index changes with it. With frozen columns, reordering is confined to the scrolling middle band.
>
> This example sets the columns can be dragged by their header:
>
> ``` xojo
> Table1.AllowColumnReordering = True
> ```

<div id="desktoptable.allowexpandablerows">

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

</div>

<div class="rst-class">

forsearch

</div>

DesktopTable.AllowExpandableRows

**AllowExpandableRows** As `Boolean</api/data_types/boolean>`

> Reserves space for disclosure widgets and enables the hierarchy. Rows added with `AddExpandableRow<desktoptable.addexpandablerow>` then show a disclosure widget, and every row is indented by its `RowDepthAt<desktoptable.rowdepthat>`. Opening and closing a row fires `RowExpanded<desktoptable.rowexpanded>` and `RowCollapsed<desktoptable.rowcollapsed>`.
>
> This example sets the reserves space for disclosure widgets and enables the hierarchy:
>
> ``` xojo
> Table1.AllowExpandableRows = True
> ```

<div id="desktoptable.allowfocus">

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

</div>

<div class="rst-class">

forsearch

</div>

DesktopTable.AllowFocus

**AllowFocus** As `Boolean</api/data_types/boolean>`

> If `True</api/language/true>`, the canvas will be included in the Tab order and can accept the focus. The `FocusReceived<desktopuicontrol.focusreceived>` and `FocusLost<desktopuicontrol.focuslost>` events are called at the appropriate times.
>
> This code enables the AllowFocus property. It is in the Opening event of the control.
>
> ``` xojo
> Me.AllowFocus = True
> ```

<div id="desktoptable.allowfocusring">

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

</div>

<div class="rst-class">

forsearch

</div>

DesktopTable.AllowFocusRing

**AllowFocusRing** As `Boolean</api/data_types/boolean>`

> If `True</api/language/true>`, the <span class="title-ref">DesktopTable</span> indicates that it has the focus with a ring around its border; if `False</api/language/false>`, the appearance of the object does not change when it has the focus.
>
> Setting this property to `True</api/language/true>` has no effect on Windows or Linux. The default is `True</api/language/true>`.
>
> This code turns AllowFocusRing off.
>
> ``` xojo
> Me.AllowFocusRing = False
> ```

<div id="desktoptable.allowresizablecolumns">

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

</div>

<div class="rst-class">

forsearch

</div>

DesktopTable.AllowResizableColumns

**AllowResizableColumns** As `Boolean</api/data_types/boolean>`

> Column widths can be dragged in the header. The pointer changes shape over a column divider, and dragging it changes that column's width expression. `ColumnResizing<desktoptable.columnresizing>` fires while dragging, `ColumnResized<desktoptable.columnresized>` once. A single column can be locked against resizing with `ColumnAttributesAt<desktoptable.columnattributesat>` and its `UserResizable` property.
>
> This example sets the column widths can be dragged in the header:
>
> ``` xojo
> Table1.AllowResizableColumns = True
> ```

<div id="desktoptable.allowresizablerows">

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

</div>

<div class="rst-class">

forsearch

</div>

DesktopTable.AllowResizableRows

**AllowResizableRows** As `Boolean</api/data_types/boolean>`

> Row heights can be dragged. Allows changing the row height with the mouse (handle at the. The user drags the lower edge of a row in the same way a column divider is dragged, which sets that row's `RowHeightAt<desktoptable.rowheightat>`.
>
> This example sets the row heights can be dragged:
>
> ``` xojo
> Table1.AllowResizableRows = True
> ```

<div id="desktoptable.allowrowanimation">

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

</div>

<div class="rst-class">

forsearch

</div>

DesktopTable.AllowRowAnimation

**AllowRowAnimation** As `Boolean</api/data_types/boolean>`

> A row added with `AddRow<desktoptable.addrow>`, `AddRowAt<desktoptable.addrowat>` or `AddExpandableRow<desktoptable.addexpandablerow>` fades and slides in, and one removed with `RemoveRowAt<desktoptable.removerowat>` fades and slides out. The default is `True</api/language/true>`.
>
> If you want to improve performance when adding and removing rows, you can set <span class="title-ref">AllowRowAnimation</span> to `False</api/language/false>`.
>
> This example turns the animation off:
>
> ``` xojo
> Table1.AllowRowAnimation = False
> ```

<div id="desktoptable.allowrowdragging">

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

</div>

<div class="rst-class">

forsearch

</div>

DesktopTable.AllowRowDragging

**AllowRowDragging** As `Boolean</api/data_types/boolean>`

> Rows can be dragged out of the table. Allows dragging rows outward (DragRow event).
>
> This example sets the rows can be dragged out of the table:
>
> ``` xojo
> Table1.AllowRowDragging = True
> ```

<div id="desktoptable.allowrowreordering">

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

</div>

<div class="rst-class">

forsearch

</div>

DesktopTable.AllowRowReordering

**AllowRowReordering** As `Boolean</api/data_types/boolean>`

> Rows can be reordered by dragging. Allows reordering rows with the mouse (DragReorderRows event).
>
> This example sets the rows can be reordered by dragging:
>
> ``` xojo
> Table1.AllowRowReordering = True
> ```

<div id="desktoptable.allowtabs">

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

</div>

<div class="rst-class">

forsearch

</div>

DesktopTable.AllowTabs

**AllowTabs** As `Boolean</api/data_types/boolean>`

> If `True</api/language/true>` and `AllowFocus<desktoptable.allowfocus>` is `True</api/language/true>`, then pressing Tab triggers the KeyDown event for processing. The default is `False</api/language/false>`.
>
> If `False</api/language/false>`, pressing the Tab key does not trigger the KeyDown event; pressing Tab triggers the FocusLost Event and selects the next object in the window that can accept the focus.
>
> The following turns on AllowTabs.
>
> ``` xojo
> Me.AllowTabs = True
> ```

<div id="desktoptable.allowtabstop">

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

</div>

<div class="rst-class">

forsearch

</div>

DesktopTable.AllowTabStop

**AllowTabStop** As `Boolean</api/data_types/boolean>`

> If `True</api/language/true>`, the control is in the Tab Order and accepts the focus when the user tabs into it. The default is `True</api/language/true>`. If `False</api/language/false>`, the user cannot tab into it to give it the focus. However, the control can gain the focus by other means, such as the user's clicking on it or by setting the focus in code.
>
> This example removes the control from the Tab Order:
>
> ``` xojo
> Me.AllowTabStop = False
> ```

<div id="desktoptable.alternatingrowcolor">

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

</div>

<div class="rst-class">

forsearch

</div>

DesktopTable.AlternatingRowColor

**AlternatingRowColor** As `ColorGroup</api/graphics/colorgroup>`

> Background color of every second row while `HasAlternatingRowColors<desktoptable.hasalternatingrowcolors>` is `True</api/language/true>`. `Nil</api/language/nil>` (the default) uses the tint the platform itself uses for lists: on macOS the system's second content background color, on Windows and Linux a nearly transparent black in light mode and a nearly transparent white in dark mode, so whatever lies behind the table still shows through. A table with `HasTranslucentBackground<desktoptable.hastranslucentbackground>` uses the transparent mix on macOS too, because the system color is opaque in light mode and would paint the blur away on every second row.
>
> This example tints every second row in the company's pale gray instead of the system color:
>
> ``` xojo
> Table1.AlternatingRowColor = New ColorGroup(&cF2F4F7, &c2B2F33)
> Table1.HasAlternatingRowColors = True
> ```

<div id="desktoptable.bold">

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

</div>

<div class="rst-class">

forsearch

</div>

DesktopTable.Bold

**Bold** As `Boolean</api/data_types/boolean>`

> Base font style for the whole table. It applies to every cell and to the column headers, unless a cell overrides it with `CellBoldAt<desktoptable.cellboldat>`.
>
> This example sets the base font style for the whole table:
>
> ``` xojo
> Table1.Bold = True
> ```

<div id="desktoptable.bottominset">

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

</div>

<div class="rst-class">

forsearch

</div>

DesktopTable.BottomInset

**BottomInset** As `Double</api/data_types/double>`

> Free, non-clickable area after the last row, in points; enlarges the scrollable content. Use it to keep the last row clear of something drawn over the lower edge, or simply to let the content scroll past the end.
>
> This example sets the free, non-clickable area after the last row, in points; enlarges the scrollable content:
>
> ``` xojo
> Table1.BottomInset = 1.0
> ```

<div id="desktoptable.cellcontainerpadding">

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

</div>

<div class="rst-class">

forsearch

</div>

DesktopTable.CellContainerPadding

**CellContainerPadding** As `Double</api/data_types/double>`

> Gap in points between the edge of a cell and the container shown in it, on all four sides. The default is 0.
>
> It applies to every cell of type Container: the container is given what is left of the cell, so a padding of 4 makes it 8 points narrower and 8 points shorter than the cell itself.
>
> This example keeps the containers clear of the grid lines:
>
> ``` xojo
> Table1.CellContainerPadding = 4
> ```

<div id="desktoptable.columncount">

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

</div>

<div class="rst-class">

forsearch

</div>

DesktopTable.ColumnCount

**ColumnCount** As `Integer</api/data_types/integer>`

> Number of columns. The original clamps at 256; thanks to virtualization. Raising it appends empty columns, lowering it removes the columns on the right including their cell content. The column count is not limited to 256, and the drawing cost depends on the columns actually visible, not on this number.
>
> This example sets the number of columns:
>
> ``` xojo
> Table1.ColumnCount = 3
> ```

<div id="desktoptable.columnwidths">

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

</div>

<div class="rst-class">

forsearch

</div>

DesktopTable.ColumnWidths

**ColumnWidths** As `String</api/data_types/string>`

> Comma-separated width expressions (points, `*` shares, or percentages). Each value applies to the column at the same position: a point value (`120`), a percentage (`25%`) or a share of the remaining width (`*`, `2*`). An unusable expression raises an `UnsupportedFormatException</api/exceptions/unsupportedformatexception>`. Individual columns can be set through `ColumnAttributesAt<desktoptable.columnattributesat>` instead.
>
> This example sets the comma-separated width expressions:
>
> ``` xojo
> Table1.ColumnWidths = "120,*,80"
> ```

<div id="desktoptable.containercachesize">

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

</div>

<div class="rst-class">

forsearch

</div>

DesktopTable.ContainerCacheSize

**ContainerCacheSize** As `Integer</api/data_types/integer>`

> How many containers the table keeps for reuse beyond the ones in use. The default is 24.
>
> A cell that scrolls out of view hands its container to this pool, and `ReusableContainer<desktoptable.reusablecontainer>` gives it to the next cell that asks for one of the same kind. 0 switches the reuse off: every cell then builds its own container, and `ContainerRemovedAt<desktoptable.containerremovedat>` reports each one the table has finished with.
>
> This example switches the reuse off:
>
> ``` xojo
> Table1.ContainerCacheSize = 0
> ```

<div id="desktoptable.content">

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

</div>

<div class="rst-class">

forsearch

</div>

DesktopTable.Content

**Content** As `String</api/data_types/string>`

> Whole content - rows separated by `EndOfLine</api/text/endofline>`, cells by `Tab`. Reading it returns the whole table, writing it replaces every row. It is the text form the inline editor and `CellTextAt<desktoptable.celltextat>` also use, so a value containing a Tab or a line break changes the shape of the result.
>
> This example sets the whole content - rows separated by EndOfLine, cells by Tab:
>
> ``` xojo
> Table1.Content = "Anna" + Chr(9) + "Berlin"
> ```

<div id="desktoptable.datasource">

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

</div>

<div class="rst-class">

forsearch

</div>

DesktopTable.DataSource

**DataSource** As `TableDataSource</api/interfaces/tabledatasource>`

> Virtual data source; `Nil</api/language/nil>` selects in-memory mode. With a data source assigned the table keeps no rows of its own: it asks the source for `RowCount<tabledatasource.rowcount>` and for the text of the cells it is about to draw. Everything else - selection, row heights, cell styles, tags - stays with the table, kept per row index. After the data behind the source changed, call `ReloadFromDataSource<desktoptable.reloadfromdatasource>`.
>
> This example sets the virtual data source; `Nil</api/language/nil>` selects in-memory mode:
>
> ``` xojo
> Table1.DataSource = myTableDataSource
> ```

<div id="desktoptable.defaultrowheight">

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

</div>

<div class="rst-class">

forsearch

</div>

DesktopTable.DefaultRowHeight

**DefaultRowHeight** As `Integer</api/data_types/integer>`

> Row height in points; `-1` derives it from the font. It applies to every row that has no `RowHeightAt<desktoptable.rowheightat>` of its own. Leaving all rows at the default is also the fastest case: the offset of a row is then a single multiplication, with no per-row data at all.
>
> This example sets the row height in points; -1 derives it from the font:
>
> ``` xojo
> Table1.DefaultRowHeight = 24
> ```

<div id="desktoptable.dropindicatorvisible">

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

</div>

<div class="rst-class">

forsearch

</div>

DesktopTable.DropIndicatorVisible

**DropIndicatorVisible** As `Boolean</api/data_types/boolean>`

> Shows the insertion indicator during a drop. It only changes what is drawn. The drag events fire either way.
>
> This example shows the insertion indicator during a drop:
>
> ``` xojo
> Table1.DropIndicatorVisible = True
> ```

<div id="desktoptable.enabled">

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

</div>

<div class="rst-class">

forsearch

</div>

DesktopTable.Enabled

**Enabled** As `Boolean</api/data_types/boolean>`

> Determines if the control should be enabled when the owning window is opened.
>
> A disabled control cannot be clicked and cannot receive the focus.
>
> This example disables the control.
>
> ``` xojo
> Me.Enabled = False
> ```

<div id="desktoptable.fontname">

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

</div>

<div class="rst-class">

forsearch

</div>

DesktopTable.FontName

**FontName** As `String</api/data_types/string>`

> Base font. It applies to every cell and to the column headers. Besides an installed font you can use the metafonts `System` and `SmallSystem`.
>
> This example sets the base font:
>
> ``` xojo
> Table1.FontName = "Helvetica"
> ```

<div id="desktoptable.fontsize">

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

</div>

<div class="rst-class">

forsearch

</div>

DesktopTable.FontSize

**FontSize** As `Single</api/data_types/single>`

> Base font size. A value of 0 uses the size that suits the platform. The row height follows the font when `DefaultRowHeight<desktoptable.defaultrowheight>` is left at -1.
>
> This example sets the base font size:
>
> ``` xojo
> Table1.FontSize = 14
> ```

<div id="desktoptable.fontunit">

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

</div>

<div class="rst-class">

forsearch

</div>

DesktopTable.FontUnit

**FontUnit** As `FontUnits</api/graphics/fontunits>`

> Unit for `FontSize<desktoptable.fontsize>`. It says how `FontSize<desktoptable.fontsize>` is measured, points by default.
>
> This example sets the unit for FontSize:
>
> ``` xojo
> Table1.FontUnit = FontUnit
> ```

<div id="desktoptable.frozencolumns">

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

</div>

<div class="rst-class">

forsearch

</div>

DesktopTable.FrozenColumns

**FrozenColumns** As `DesktopTableFrozenColumns</api/user_interface/desktop/desktoptablefrozencolumns>`

> Always the same instance; set `.Left` / `.Right` to pin columns. Set its `Left` and `Right` to pin that many columns to the edges while the columns in between scroll. In a right-to-left layout the leading edge is on the right.
>
> This property is read-only.
>
> This example reads the always the same instance; set .Left / .Right to pin columns:
>
> ``` xojo
> Var value As DesktopTableFrozenColumns = Table1.FrozenColumns
> ```

<div id="desktoptable.frozenrows">

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

</div>

<div class="rst-class">

forsearch

</div>

DesktopTable.FrozenRows

**FrozenRows** As `DesktopTableFrozenRows</api/user_interface/desktop/desktoptablefrozenrows>`

> Always the same instance; set `.Top` / `.Bottom` to pin rows. Set its `Top` and `Bottom` to pin that many rows below the header and above the lower edge, which is how a totals row is kept in view.
>
> This property is read-only.
>
> This example reads the always the same instance; set .Top / .Bottom to pin rows:
>
> ``` xojo
> Var value As DesktopTableFrozenRows = Table1.FrozenRows
> ```

<div id="desktoptable.gridcolor">

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

</div>

<div class="rst-class">

forsearch

</div>

DesktopTable.GridColor

**GridColor** As `ColorGroup</api/graphics/colorgroup>`

> Body grid line color; `Nil</api/language/nil>` (the default) uses the theme-appropriate color. Does **not** affect the header's own column dividers or bottom border.
>
> This example sets the body grid line color; `Nil</api/language/nil>` (the default) uses the theme-appropriate color:
>
> ``` xojo
> Table1.GridColor = New ColorGroup(&cD93025, &cC5372C)
> ```

<div id="desktoptable.gridlinestyle">

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

</div>

<div class="rst-class">

forsearch

</div>

DesktopTable.GridLineStyle

**GridLineStyle** As `DesktopTable.GridLineStyles<desktoptable.gridlinestyles>`

> Which grid lines are drawn. Grid lines are drawn between cells, never through a merged cell, and they follow the column widths, so a hidden column adds no line of its own.
>
> This example sets the which grid lines are drawn:
>
> ``` xojo
> Table1.GridLineStyle = DesktopTable.GridLineStyles.Both
> ```

<div id="desktoptable.handle">

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

</div>

<div class="rst-class">

forsearch

</div>

DesktopTable.Handle

**Handle** As `Ptr</api/data_types/additional_types/ptr>`

> Returns a handle to the control.
>
> This property is read-only.
>
> For interfacing with Mac APIs using `Declares</api/language/declare>`, **DesktopControl.Handle** returns NSViews (except for `DesktopToolbar</api/user_interface/desktop/desktoptoolbar>`).
>
> On Windows returns the HWND of the control.
>
> On Linux it returns a GtkWidget.
>
> The following gets a handle to the control.
>
> ``` xojo
> Var p As Ptr = Me.Handle
> ```

<div id="desktoptable.hasalternatingrowcolors">

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

</div>

<div class="rst-class">

forsearch

</div>

DesktopTable.HasAlternatingRowColors

**HasAlternatingRowColors** As `Boolean</api/data_types/boolean>`

> Draws every second row in `AlternatingRowColor<desktoptable.alternatingrowcolor>`, which makes a wide row easier to follow across its columns. The default is `False</api/language/false>`. Row 0 keeps the plain background, the stripes cover the full width of a row including frozen columns, the area past the last column and the action strips of a swiped row, and the pattern keeps running below the last row.
>
> The stripe is drawn underneath everything else the row paints, so a `PaintCellBackground<desktoptable.paintcellbackground>` handler that returns `True</api/language/true>`, the selection highlight and the grid lines all keep their usual appearance.
>
> This example turns the stripes on for a table with many columns:
>
> ``` xojo
> Table1.HasAlternatingRowColors = True
> ```

<div id="desktoptable.hasborder">

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

</div>

<div class="rst-class">

forsearch

</div>

DesktopTable.HasBorder

**HasBorder** As `Boolean</api/data_types/boolean>`

> Draws the control border. The border is drawn by the platform, so it matches other framed controls.
>
> This example draws the control border:
>
> ``` xojo
> Table1.HasBorder = True
> ```

<div id="desktoptable.hascolumnheader">

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

</div>

<div class="rst-class">

forsearch

</div>

DesktopTable.HasColumnHeader

**HasColumnHeader** As `Boolean</api/data_types/boolean>`

> Shows the column header row. Turn the translucent header on/off together with the header. The header shows the text of `ColumnHeaderAt<desktoptable.columnheaderat>`, is drawn in the platform theme and is where the user clicks to sort, drags to resize and drags to reorder columns.
>
> This example shows the column header row:
>
> ``` xojo
> Table1.HasColumnHeader = True
> ```

<div id="desktoptable.hashorizontalscrollbar">

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

</div>

<div class="rst-class">

forsearch

</div>

DesktopTable.HasHorizontalScrollbar

**HasHorizontalScrollbar** As `Boolean</api/data_types/boolean>`

> Enables horizontal scrolling. The scrollbar only appears when the columns are wider than the table. The position is available as `ScrollPositionX<desktoptable.scrollpositionx>`.
>
> This example sets the enables horizontal scrolling:
>
> ``` xojo
> Table1.HasHorizontalScrollbar = True
> ```

<div id="desktoptable.hastranslucentbackground">

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

</div>

<div class="rst-class">

forsearch

</div>

DesktopTable.HasTranslucentBackground

**HasTranslucentBackground** As `Boolean</api/data_types/boolean>`

> **macOS only** - places an `NSVisualEffectView` behind the table. The inline editor of a TextField or TextArea cell is then drawn without a background of its own, so the translucency shows through while a cell is being edited.
>
> This example sets the *macOS only* - places an NSVisualEffectView behind the table:
>
> ``` xojo
> Table1.HasTranslucentBackground = True
> ```

<div id="desktoptable.hastranslucentheader">

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

</div>

<div class="rst-class">

forsearch

</div>

DesktopTable.HasTranslucentHeader

**HasTranslucentHeader** As `Boolean</api/data_types/boolean>`

> **macOS only** - translucent header; rows glide blurred beneath it.
>
> This example sets the *macOS only* - translucent header; rows glide blurred beneath it:
>
> ``` xojo
> Table1.HasTranslucentHeader = True
> ```

<div id="desktoptable.hasverticalscrollbar">

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

</div>

<div class="rst-class">

forsearch

</div>

DesktopTable.HasVerticalScrollbar

**HasVerticalScrollbar** As `Boolean</api/data_types/boolean>`

> Enables vertical scrolling. The position is available as `ScrollPosition<desktoptable.scrollposition>`.
>
> This example sets the enables vertical scrolling:
>
> ``` xojo
> Table1.HasVerticalScrollbar = True
> ```

<div id="desktoptable.headerheight">

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

</div>

<div class="rst-class">

forsearch

</div>

DesktopTable.HeaderHeight

**HeaderHeight** As `Integer</api/data_types/integer>`

> Header height in points. Height of the header row in points. It is the height of the header row only; the rows below are unaffected.
>
> This example sets the header height in points:
>
> ``` xojo
> Table1.HeaderHeight = 28
> ```

<div id="desktoptable.headingindex">

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

</div>

<div class="rst-class">

forsearch

</div>

DesktopTable.HeadingIndex

**HeadingIndex** As `Integer</api/data_types/integer>`

> Sets the sort column and the sort indicator in the header row. It is the column the indicator is shown for. The sort itself runs when `Sort<desktoptable.sort>` is called or the user clicks a sortable header.
>
> This example sets the sort column and the sort indicator in the header row:
>
> ``` xojo
> Table1.HeadingIndex = 0
> ```

<div id="desktoptable.height">

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

</div>

<div class="rst-class">

forsearch

</div>

DesktopTable.Height

**Height** As `Integer</api/data_types/integer>`

> The height (in points) of the control.
>
> This example sets the height of the control to 100:
>
> ``` xojo
> Me.Height = 100
> ```

<div id="desktoptable.index">

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

</div>

<div class="rst-class">

forsearch

</div>

DesktopTable.Index

**Index** As `Integer</api/data_types/integer>`

> If the control is used in a control set, this specifies the control's index in the set.
>
> This example sets the property:
>
> ``` xojo
> Table1.Index = 0
> ```

<div id="desktoptable.initialvalue">

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

</div>

<div class="rst-class">

forsearch

</div>

DesktopTable.InitialValue

**InitialValue** As `String</api/data_types/string>`

> Design-time content, applied when you start your app. Rows are separated by line breaks and cells by Tab. It is applied while the control opens, so code in the `Opening<desktoptable.opening>` event runs on top of it.
>
> This example sets the design-time content, applied in Opening:
>
> ``` xojo
> Table1.InitialValue = "Name" + Chr(9) + "City"
> ```

<div id="desktoptable.italic">

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

</div>

<div class="rst-class">

forsearch

</div>

DesktopTable.Italic

**Italic** As `Boolean</api/data_types/boolean>`

> Base font style. It applies to every cell and to the column headers, unless a cell overrides it with `CellItalicAt<desktoptable.cellitalicat>`.
>
> This example sets the base font style:
>
> ``` xojo
> Table1.Italic = True
> ```

<div id="desktoptable.lastaddedcolumnindex">

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

</div>

<div class="rst-class">

forsearch

</div>

DesktopTable.LastAddedColumnIndex

**LastAddedColumnIndex** As `Integer</api/data_types/integer>`

> Index of the most recently added column, `-1` if none. Use it to address a column right after adding it, instead of counting positions yourself.
>
> This property is read-only.
>
> This example reads the index of the most recently added column, -1 if none:
>
> ``` xojo
> Var value As Integer = Table1.LastAddedColumnIndex
> ```

<div id="desktoptable.lastaddedrowindex">

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

</div>

<div class="rst-class">

forsearch

</div>

DesktopTable.LastAddedRowIndex

**LastAddedRowIndex** As `Integer</api/data_types/integer>`

> Index of the most recently added row, `NoSelection</api/user_interface/desktop/desktoptable/constants>` if none. Use it to fill the other cells of a row right after adding it.
>
> This property is read-only.
>
> This example reads the index of the most recently added row, NoSelection if none:
>
> ``` xojo
> Var value As Integer = Table1.LastAddedRowIndex
> ```

<div id="desktoptable.lastcolumnindex">

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

</div>

<div class="rst-class">

forsearch

</div>

DesktopTable.LastColumnIndex

**LastColumnIndex** As `Integer</api/data_types/integer>`

> Index of the last column. It is one less than `ColumnCount<desktoptable.columncount>`, and -1 while the table has no columns.
>
> This property is read-only.
>
> This example reads the index of the last column:
>
> ``` xojo
> Var value As Integer = Table1.LastColumnIndex
> ```

<div id="desktoptable.lastrowindex">

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

</div>

<div class="rst-class">

forsearch

</div>

DesktopTable.LastRowIndex

**LastRowIndex** As `Integer</api/data_types/integer>`

> Index of the last row. It is one less than `RowCount<desktoptable.rowcount>`, and -1 while the table is empty.
>
> This property is read-only.
>
> This example reads the index of the last row:
>
> ``` xojo
> Var value As Integer = Table1.LastRowIndex
> ```

<div id="desktoptable.left">

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

</div>

<div class="rst-class">

forsearch

</div>

DesktopTable.Left

**Left** As `Integer</api/data_types/integer>`

> The distance from the left side of the control to the left side of its containing window or container.
>
> The following example moves the control 100 points from the left side of the window:
>
> ``` xojo
> Me.Left = 150
> ```

<div id="desktoptable.lockbottom">

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

</div>

<div class="rst-class">

forsearch

</div>

DesktopTable.LockBottom

**LockBottom** As `Boolean</api/data_types/boolean>`

> Determines whether the bottom edge of the control should stay at a set distance from the bottom edge of the parent control, if there is one, or the owning window.
>
> This property can be set in the control's Inspector. The following example sets it in code.
>
> ``` xojo
> Me.LockBottom = True
> ```

<div id="desktoptable.lockleft">

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

</div>

<div class="rst-class">

forsearch

</div>

DesktopTable.LockLeft

**LockLeft** As `Boolean</api/data_types/boolean>`

> Determines whether the left edge of the control should stay at a set distance from the left edge of the parent control, if there is one, or the owning window.
>
> LockLeft and Locktop default to `True</api/language/true>` when you add a new control to a window. Existing controls will be altered only if LockRight and/or LockBottom are not set. *LockLeft* has no effect unless *LockRight* is `True</api/language/true>`.
>
> This property can be set in the control's Inspector. The following example sets it in code.
>
> ``` xojo
> Me.LockLeft = True
> ```

<div id="desktoptable.lockright">

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

</div>

<div class="rst-class">

forsearch

</div>

DesktopTable.LockRight

**LockRight** As `Boolean</api/data_types/boolean>`

> Determines whether the right edge of the control should stay at a set distance from the right edge of the parent control, if there is one, or the owning window.
>
> This property can be set in the control's Inspector. The following example sets it in code.
>
> ``` xojo
> Me.LockRight = True
> ```

<div id="desktoptable.locktop">

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

</div>

<div class="rst-class">

forsearch

</div>

DesktopTable.LockTop

**LockTop** As `Boolean</api/data_types/boolean>`

> Determines whether the top edge of the control should stay at a set distance from the top edge of the parent control, if there is one, or the owning window.
>
> LockTop and LockLeft default to `True</api/language/true>` when you add a control to a window. Existing controls will be altered only if LockRight and/or LockBottom are not set. *LockTop* has no effect unless *LockBottom* is `True</api/language/true>`.
>
> This property can be set in the control's Inspector. The following example sets it in code.
>
> ``` xojo
> Me.LockTop = True
> ```

<div id="desktoptable.mousecursor">

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

</div>

<div class="rst-class">

forsearch

</div>

DesktopTable.MouseCursor

**MouseCursor** As `MouseCursor</api/user_interface/desktop/mousecursor>`

> The cursor to be displayed while the mouse is within the control and both the `DesktopApplication</api/user_interface/desktop/desktopapplication>` and `DesktopWindow</api/user_interface/desktop/desktopwindow>` class's MouseCursor properties are `Nil</api/language/nil>`.
>
> If the `DesktopApplication</api/user_interface/desktop/desktopapplication>` class's MouseCursor property is not `Nil</api/language/nil>` or the `DesktopWindow</api/user_interface/desktop/desktopwindow>`'s MouseCursor property is not `Nil</api/language/nil>`, then any control's MouseCursor property is ignored. You can use a cursor stored in the `Cursors</api/user_interface/desktop/cursors>` module. On macOS, you can also obtain a `MouseCursor</api/user_interface/desktop/mousecursor>` from a resource file.
>
> This line in the Opening event of the control sets the default cursor to the finger pointer.
>
> ``` xojo
> Me.MouseCursor = System.Cursors.FingerPointer
> ```

<div id="desktoptable.name">

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

</div>

<div class="rst-class">

forsearch

</div>

DesktopTable.Name

**Name** As `String</api/data_types/string>`

> The name of the control. Set the name of the control in the Inspector.
>
> This property is read-only.
>
> This example reads the property:
>
> ``` xojo
> Var value As String = Table1.Name
> ```

<div id="desktoptable.panelindex">

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

</div>

<div class="rst-class">

forsearch

</div>

DesktopTable.PanelIndex

**PanelIndex** As `Integer</api/data_types/integer>`

> If the control has been placed on a `DesktopTabPanel</api/user_interface/desktop/desktoptabpanel>` or `DesktopPagePanel</api/user_interface/desktop/desktoppagepanel>` control, this is the panel (page/tab) that the control is on. If the control is not on a panel, it returns -1.
>
> The first panel is numbered zero. If the control has been placed on a panel of a `DesktopTabPanel</api/user_interface/desktop/desktoptabpanel>` or `DesktopPagePanel</api/user_interface/desktop/desktoppagepanel>` control, it returns the panel number. If the control is not on a `DesktopPagePanel</api/user_interface/desktop/desktoppagepanel>` or `DesktopTabPanel</api/user_interface/desktop/desktoptabpanel>`, it returns -1. If you change the PanelIndex to a nonexistent panel, the control will disappear until you give it a PanelIndex value that corresponds to a panel that exists.
>
> If you are looking to change the currently selected panel (page/tab), use `DesktopPagePanel.SelectedPanelIndex<desktoppagepanel.selectedpanelindex>`.
>
> This code displays the panel index of the control that is on the page.
>
> ``` xojo
> MessageBox(Me.SelectedPanelIndex.ToString)
> ```

<div id="desktoptable.parent">

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

</div>

<div class="rst-class">

forsearch

</div>

DesktopTable.Parent

**Parent** As `Object</api/data_types/additional_types/object>`

> Used to get and set the control's parent control or window.
>
> If the control is on the window, the Parent will be the `Window</api/user_interface/desktop/desktopwindow>`. If the control is on the container, the Parent will be the `container</api/user_interface/desktop/desktopcontainer>`. If the control is completed enclosed by another control, the Parent will be that `control</api/user_interface/desktop/desktopuicontrol>`.
>
> If you do not want the enclosing control to be the parent, set the Parent property of that control to `Nil</api/language/nil>` to make it the `Window</api/user_interface/desktop/desktopwindow>`.
>
> If the parent control is somehow in another window, an `InvalidParentException</api/exceptions/invalidparentexception>` will occur.
>
> The following example sets the parent of the control to the window.
>
> ``` xojo
> Me.Parent = Nil
> ```

<div id="desktoptable.requiresselection">

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

</div>

<div class="rst-class">

forsearch

</div>

DesktopTable.RequiresSelection

**RequiresSelection** As `Boolean</api/data_types/boolean>`

> Keeps at least one row selected. `True</api/language/true>` prevents the user from clearing the last selection. With `True</api/language/true>` a click on empty space or on the selected row no longer clears the selection. It does not select a row by itself; that is up to your code.
>
> This example keeps at least one row selected:
>
> ``` xojo
> Table1.RequiresSelection = True
> ```

<div id="desktoptable.rowcount">

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

</div>

<div class="rst-class">

forsearch

</div>

DesktopTable.RowCount

**RowCount** As `Integer</api/data_types/integer>`

> Number of rows. In DataSource mode it is what the source reports, otherwise the number of rows the table holds itself.
>
> This property is read-only.
>
> This example reads the number of rows:
>
> ``` xojo
> Var value As Integer = Table1.RowCount
> ```

<div id="desktoptable.rowheight">

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

</div>

<div class="rst-class">

forsearch

</div>

DesktopTable.RowHeight

**RowHeight** As `Integer</api/data_types/integer>`

> Resolved default row height in points. It is the height `DefaultRowHeight<desktoptable.defaultrowheight>` resolves to, so it is a real measurement even when the height follows the font.
>
> This property is read-only.
>
> This example reads the resolved default row height in points:
>
> ``` xojo
> Var value As Integer = Table1.RowHeight
> ```

<div id="desktoptable.rowselectiontype">

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

</div>

<div class="rst-class">

forsearch

</div>

DesktopTable.RowSelectionType

**RowSelectionType** As `DesktopTable.RowSelectionTypes<desktoptable.rowselectiontypes>`

> Single or multiple selection. Single reduces a multiple selection to the bottom-most row. It decides how clicking, dragging and the arrow keys change the selection. Switching to Single while several rows are selected keeps the bottom-most one.
>
> This example sets the single or multiple selection:
>
> ``` xojo
> Table1.RowSelectionType = DesktopTable.RowSelectionTypes.Multiple
> ```

<div id="desktoptable.scope">

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

</div>

<div class="rst-class">

forsearch

</div>

DesktopTable.Scope

**Scope** As `Integer</api/data_types/integer>`

> Used to determine whether access to the control is Public (0) or Private (2). The default is Public.
>
> This property is read-only.
>
> <div class="note">
>
> <div class="title">
>
> Note
>
> </div>
>
> This is a designtime-only property and thus can only be set in the Inspector and is not accessible via code.
>
> </div>
>
> If the Scope of a control is set to Private, it cannot be accessed from outside its parent window.
>
> This example reads the property:
>
> ``` xojo
> Var value As Integer = Table1.Scope
> ```

<div id="desktoptable.scrollposition">

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

</div>

<div class="rst-class">

forsearch

</div>

DesktopTable.ScrollPosition

**ScrollPosition** As `Integer</api/data_types/integer>`

> Index of the top-most visible row. Assigning it scrolls so that row becomes the top-most one, which is the same movement the vertical scrollbar makes.
>
> This example sets the index of the top-most visible row:
>
> ``` xojo
> Table1.ScrollPosition = 0
> ```

<div id="desktoptable.scrollpositionx">

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

</div>

<div class="rst-class">

forsearch

</div>

DesktopTable.ScrollPositionX

**ScrollPositionX** As `Integer</api/data_types/integer>`

> Horizontal scroll offset in points. Horizontal scroll position in points. It is measured in points, not in columns, so it can stop in the middle of a column.
>
> This example sets the horizontal scroll offset in points:
>
> ``` xojo
> Table1.ScrollPositionX = 0
> ```

<div id="desktoptable.selectedrowcount">

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

</div>

<div class="rst-class">

forsearch

</div>

DesktopTable.SelectedRowCount

**SelectedRowCount** As `Integer</api/data_types/integer>`

> Number of selected rows. It is kept as rows are selected and deselected, so it costs nothing to read even with many rows.
>
> This property is read-only.
>
> This example reads the number of selected rows:
>
> ``` xojo
> Var value As Integer = Table1.SelectedRowCount
> ```

<div id="desktoptable.selectedrowindex">

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

</div>

<div class="rst-class">

forsearch

</div>

DesktopTable.SelectedRowIndex

**SelectedRowIndex** As `Integer</api/data_types/integer>`

> Smallest selected row index, or `NoSelection`. With several rows selected it is the topmost of them; assigning it selects that single row. Use `RowSelectedAt<desktoptable.rowselectedat>` to read or set the state of a particular row.
>
> This example sets the smallest selected row index, or NoSelection:
>
> ``` xojo
> Table1.SelectedRowIndex = 0
> ```

<div id="desktoptable.selectedrowtext">

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

</div>

<div class="rst-class">

forsearch

</div>

DesktopTable.SelectedRowText

**SelectedRowText** As `String</api/data_types/string>`

> Text of column 0 of the selected row. Text (column 0) of the selected row. It is a shortcut for the first column of the selected row and follows the same rule as `SelectedRowIndex<desktoptable.selectedrowindex>` when several rows are selected.
>
> This property is read-only.
>
> This example reads the text of column 0 of the selected row:
>
> ``` xojo
> Var value As String = Table1.SelectedRowText
> ```

<div id="desktoptable.sortingcolumn">

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

</div>

<div class="rst-class">

forsearch

</div>

DesktopTable.SortingColumn

**SortingColumn** As `Integer</api/data_types/integer>`

> Column used by `Sort<desktoptable.sort>`; `-1` for none. Does **not** set a header indicator. It is the column `Sort<desktoptable.sort>` uses, together with the direction from `ColumnSortDirectionAt<desktoptable.columnsortdirectionat>`. Set `HeadingIndex<desktoptable.headingindex>` as well to show the indicator in the header.
>
> This example sets the column used by Sort; -1 for none:
>
> ``` xojo
> Table1.SortingColumn = 0
> ```

<div id="desktoptable.tabindex">

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

</div>

<div class="rst-class">

forsearch

</div>

DesktopTable.TabIndex

**TabIndex** As `Integer</api/data_types/integer>`

> The control's position in the Tab Order. The control with whose TabIndex is 0 will get the focus first.
>
> On macOS, only controls where you enter data from the keyboard typically get the focus. In order to manually set focus to controls that don't allow keyboard entry, go to System Preferences, click on the Keyboard icon then on the Shortcuts tab and then check the *Use keyboard navigation to move focus between controls* checkbox.
>
> This example sets the control's TabIndex.
>
> ``` xojo
> Me.TabIndex = 2
> ```

<div id="desktoptable.tooltip">

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

</div>

<div class="rst-class">

forsearch

</div>

DesktopTable.Tooltip

**Tooltip** As `String</api/data_types/string>`

> Text of help message displayed as a Windows or Linux "tooltip" or macOS help tag.
>
> The tip/tag is displayed when the user hovers the mouse cursor over the control.
>
> This example adds a tooltip to a control:
>
> ``` xojo
> Me.Tooltip = "Click to bark."
> ```

<div id="desktoptable.top">

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

</div>

<div class="rst-class">

forsearch

</div>

DesktopTable.Top

**Top** As `Integer</api/data_types/integer>`

> The distance from the top of the control to the top of its containing window or container.
>
> This example sets the top of the control to 140 points from the top of the window:
>
> ``` xojo
> Me.Top = 140
> ```

<div id="desktoptable.topinset">

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

</div>

<div class="rst-class">

forsearch

</div>

DesktopTable.TopInset

**TopInset** As `Double</api/data_types/double>`

> Free, non-clickable area before the first row, in points. Use it to keep the first row clear of something drawn over the upper edge.
>
> This example sets the free, non-clickable area before the first row, in points:
>
> ``` xojo
> Table1.TopInset = 1.0
> ```

<div id="desktoptable.transparent">

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

</div>

<div class="rst-class">

forsearch

</div>

DesktopTable.Transparent

**Transparent** As `Boolean</api/data_types/boolean>`

> Determines whether the control is transparent on Windows. The default is `False</api/language/false>`. Has no effect on macOS or Linux.
>
> Transparent controls draw more slowly and use more memory in order to cache the background. Unless you absolutely require transparency, leave this set to `False</api/language/false>`.
>
> For projects that were created prior to 2018r1, this property defaults to `True</api/language/true>` to emulate previous behavior. Consider changing it to `False</api/language/false>` to improve performance if you do not require transparency.
>
> This example sets the property:
>
> ``` xojo
> Table1.Transparent = True
> ```

<div id="desktoptable.underline">

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

</div>

<div class="rst-class">

forsearch

</div>

DesktopTable.Underline

**Underline** As `Boolean</api/data_types/boolean>`

> Base font style. It applies to every cell and to the column headers, unless a cell overrides it with `CellUnderlineAt<desktoptable.cellunderlineat>`.
>
> This example sets the base font style:
>
> ``` xojo
> Table1.Underline = True
> ```

<div id="desktoptable.visible">

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

</div>

<div class="rst-class">

forsearch

</div>

DesktopTable.Visible

**Visible** As `Boolean</api/data_types/boolean>`

> Determines whether the control is visible when its owning window is opened. The default is `True</api/language/true>`: the control is visible.
>
> The following code makes the control invisible:
>
> ``` xojo
> Me.Visible = False
> ```

<div id="desktoptable.width">

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

</div>

<div class="rst-class">

forsearch

</div>

DesktopTable.Width

**Width** As `Integer</api/data_types/integer>`

> The width (in points) of the control.
>
> The following example resizes the control:
>
> ``` xojo
> Me.Width = 200
> ```

<div id="desktoptable.window">

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

</div>

<div class="rst-class">

forsearch

</div>

DesktopTable.Window

**Window** As `DesktopWindow</api/user_interface/desktop/desktopwindow>`

> The control's parent window.
>
> This property is read-only.
>
> This code gets the parent window's Title property.
>
> ``` xojo
> MessageBox(Me.Window.Title)
> ```

## Method descriptions

<div id="desktoptable.acceptfiledrop">

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

</div>

<div class="rst-class">

forsearch

</div>

DesktopTable.AcceptFileDrop

**AcceptFileDrop**(FileType As `String</api/data_types/string>`)

> Permits documents of type *FileType* to be dropped on the control. *FileType* must be a file type that you defined in via the `FileType</api/files/filetype>` class or the File Type Sets Editor.
>
> This code in the Opening event makes it possible for the user to drop either a picture or a file that is a jpeg image. The File Type Sets editor was used to define the “image/jpeg” file type. It is one of the “Common File Types” that is available in the editor.
>
> ``` xojo
> Me.AcceptPictureDrop
> Me.AcceptFileDrop("image/jpeg")
> ```
>
> To restrict file drops to specific file types on macOS, in addition to creating a File Type (as a `project item</getting_started/using_the_ide/file_type_group_editor>` or `via code</api/files/filetype>`) to define the file extension, you must also use the `DragEnter<desktopuicontrol.dragenter>` event:
>
> For example, to restrict drops to folders only:
>
> ``` xojo
> If Not obj.FolderItem.IsFolder Then Return True
> ```
>
> To restrict drops to a files with a specific extension:
>
> ``` xojo
> If Not obj.FolderItem.Extension <> ".my_extension" Then Return True
> ```

<div id="desktoptable.acceptpicturedrop">

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

</div>

<div class="rst-class">

forsearch

</div>

DesktopTable.AcceptPictureDrop

**AcceptPictureDrop**

> Permits `Picture</api/graphics/picture>` objects to be dropped on the control. This applies to pictures dragged from another control or application, not to image files dragged from the file system. To accept image files, use `AcceptFileDrop<desktoptable.acceptfiledrop>` instead.
>
> If a control should accept pictures in a drag and drop, then <span class="title-ref">AcceptPictureDrop</span> needs to be called prior to the drop. Typically, it is in the Opening event of the control itself. For example, the line:
>
> ``` xojo
> Me.AcceptPictureDrop
> ```
>
> in the Opening event of the control that will receive the dragged pictures is needed. When the picture is dropped, the `DropObject<desktopuicontrol.dropobject>` event is called and this is where you will put your code to handle the drop.
>
> Opening Event:
>
> ``` xojo
> Me.AcceptPictureDrop
> ```
>
> DropObject Event:
>
> ``` xojo
> If obj.PictureAvailable Then
>   Me.RowImageAt(0) = obj.Picture
> End If
> ```
>
> <div class="note">
>
> <div class="title">
>
> Note
>
> </div>
>
> To prevent further drops after having called <span class="title-ref">AcceptPictureDrop</span>, return `True</api/language/true>` in the `DragOver<desktoptable.dragover>` event.
>
> </div>

<div id="desktoptable.acceptrawdatadrop">

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

</div>

<div class="rst-class">

forsearch

</div>

DesktopTable.AcceptRawDataDrop

**AcceptRawDataDrop**(Type As `String</api/data_types/string>`)

> Permits data (of the Type specified) to be dropped on the control.
>
> The following specfies a generic file type defined in the File Type Sets editor.
>
> ``` xojo
> Me.AcceptRawDataDrop("????")
> ```

<div id="desktoptable.accepttextdrop">

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

</div>

<div class="rst-class">

forsearch

</div>

DesktopTable.AcceptTextDrop

**AcceptTextDrop**

> Permits text to be dropped on the control.
>
> This line in the Opening event of a control that can accept dragged text.
>
> ``` xojo
> Me.AcceptTextDrop
> ```

<div id="desktoptable.addallexpandablerows">

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

</div>

<div class="rst-class">

forsearch

</div>

DesktopTable.AddAllExpandableRows

**AddAllExpandableRows**(rows As `RowSet</api/databases/rowset>`)

> Appends all database *rows* as expandable rows and expands the column count if needed. Like `AddAllRows<desktoptable.addallrows>`, except that every row gets a disclosure widget - see `AllowExpandableRows<desktoptable.allowexpandablerows>`, and `RowExpanded<desktoptable.rowexpanded>`, which fills in the children.
>
> This example appends all database rows as expandable rows:
>
> ``` xojo
> Table1.AddAllExpandableRows(rows)
> ```

**AddAllExpandableRows**(items() As `String</api/data_types/string>`)

> Appends an expandable row (column 0) for each array element.
>
> This example appends an expandable row for each array element:
>
> ``` xojo
> Var items() As String = Array("Anna", "Berlin")
> Table1.AddAllExpandableRows(items)
> ```

**AddAllExpandableRows**(items(,) As `String</api/data_types/string>`)

> Appends one expandable row per row of the array: *items*(row, column). Every one of them gets a disclosure widget; `RowExpanded<desktoptable.rowexpanded>` fills in its children. The column count grows when a row carries more values than the table has columns, the way the `RowSet</api/databases/rowset>` overload does.
>
> This example appends two expandable rows of two columns each:
>
> ``` xojo
> Var items(1, 1) As String
>
> items(0, 0) = "Anna"
> items(0, 1) = "Berlin"
> items(1, 0) = "Bodo"
> items(1, 1) = "Atlanta"
>
> Table1.AddAllExpandableRows(items)
> ```

**AddAllExpandableRows**(`ParamArray</api/language/paramarray>` item As `String</api/data_types/string>`)

> Appends an expandable row (column 0) for each passed value.
>
> This example appends an expandable row for each passed value:
>
> ``` xojo
> Table1.AddAllExpandableRows("Anna", "Berlin")
> ```

**AddAllExpandableRows**(count As `Integer</api/data_types/integer>`)

> Appends *count* empty rows - no text in any column. Every one of them gets a disclosure widget; `RowExpanded<desktoptable.rowexpanded>` fills in its children.
>
> This example appends ten empty rows:
>
> ``` xojo
> Table1.AddAllExpandableRows(10)
> ```

<div id="desktoptable.addallrows">

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

</div>

<div class="rst-class">

forsearch

</div>

DesktopTable.AddAllRows

**AddAllRows**(rows As `RowSet</api/databases/rowset>`)

> Appends all database *rows* and expands the column count if needed.
>
> This example appends all database rows and expands the column count if needed:
>
> ``` xojo
> Table1.AddAllRows(rows)
> ```

**AddAllRows**(items() As `String</api/data_types/string>`)

> Appends a new row (column 0) for each array element.
>
> This example appends a new row (column 0) for each array element:
>
> ``` xojo
> Var items() As String = Array("Anna", "Berlin")
> Table1.AddAllRows(items)
> ```

**AddAllRows**(items(,) As `String</api/data_types/string>`)

> Appends one row per row of the array: *items*(row, column), as `DesktopListBox</api/user_interface/desktop/desktoplistbox>` does. The column count grows when a row carries more values than the table has columns, the way the `RowSet</api/databases/rowset>` overload does.
>
> This example appends two rows of two columns each:
>
> ``` xojo
> Var items(1, 1) As String
>
> items(0, 0) = "Anna"
> items(0, 1) = "Berlin"
> items(1, 0) = "Bodo"
> items(1, 1) = "Atlanta"
>
> Table1.AddAllRows(items)
> ```

**AddAllRows**(`ParamArray</api/language/paramarray>` item As `String</api/data_types/string>`)

> Appends a new row (column 0) for each passed value.
>
> This example appends a new row (column 0) for each passed value:
>
> ``` xojo
> Table1.AddAllRows("Anna", "Berlin")
> ```

**AddAllRows**(count As `Integer</api/data_types/integer>`)

> Appends *count* empty rows - no text in any column. For a table whose cells are filled afterwards through `CellTextAt<desktoptable.celltextat>`, drawn in `PaintCellText<desktoptable.paintcelltext>`, or are containers.
>
> This example appends ten empty rows:
>
> ``` xojo
> Table1.AddAllRows(10)
> ```

<div id="desktoptable.addcolumn">

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

</div>

<div class="rst-class">

forsearch

</div>

DesktopTable.AddColumn

**AddColumn**(header As `String</api/data_types/string>` = "")

> Appends a column on the right. The new column is empty in every row and its width follows the current `ColumnWidths<desktoptable.columnwidths>`.
>
> This example appends a column on the right:
>
> ``` xojo
> Table1.AddColumn
> ```

<div id="desktoptable.addcolumnat">

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

</div>

<div class="rst-class">

forsearch

</div>

DesktopTable.AddColumnAt

**AddColumnAt**(index As `Integer</api/data_types/integer>`, header As `String</api/data_types/string>` = "")

> Inserts a column; an *index* `>= ColumnCount` appends. The cells of every row move along with their column, so existing content stays with the column it belonged to. The sorting column and the heading index follow the shift as well.
>
> This example inserts a column; an index \>= ColumnCount appends:
>
> ``` xojo
> Table1.AddColumnAt(0)
> ```

<div id="desktoptable.addexpandablerow">

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

</div>

<div class="rst-class">

forsearch

</div>

DesktopTable.AddExpandableRow

**AddExpandableRow**(items() As `String</api/data_types/string>`)

> Appends an expandable row; the array fills consecutive columns. Within the RowExpanded event the row is inserted as a child of a row currently being expanded.
>
> If you want to improve performance when adding and removing rows, you can set `AllowRowAnimation<desktoptable.allowrowanimation>` to `False</api/language/false>`.
>
> This example appends an expandable row; the array fills consecutive columns:
>
> ``` xojo
> Var items() As String = Array("Anna", "Berlin")
> Table1.AddExpandableRow(items)
> ```

**AddExpandableRow**(`ParamArray</api/language/paramarray>` item As `String</api/data_types/string>`)

> Appends an expandable row; one or more parameters fill consecutive columns. Within the RowExpanded event the row is inserted as a child of a row currently being expanded.
>
> If you want to improve performance when adding and removing rows, you can set `AllowRowAnimation<desktoptable.allowrowanimation>` to `False</api/language/false>`.
>
> This example appends an expandable row; one or more parameters fill consecutive columns:
>
> ``` xojo
> Table1.AddExpandableRow("Anna", "Berlin")
> ```

<div id="desktoptable.addexpandablerowat">

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

</div>

<div class="rst-class">

forsearch

</div>

DesktopTable.AddExpandableRowAt

**AddExpandableRowAt**(row As `Integer</api/data_types/integer>`, text As `String</api/data_types/string>`, depth As `Integer</api/data_types/integer>` = 0)

> Inserts an expandable *row* at a position and *depth*. The row shows a disclosure widget once `AllowExpandableRows<desktoptable.allowexpandablerows>` is on. Its children are usually added in the `RowExpanded<desktoptable.rowexpanded>` event, not in advance.
>
> If you want to improve performance when adding and removing rows, you can set `AllowRowAnimation<desktoptable.allowrowanimation>` to `False</api/language/false>`.
>
> This example inserts an expandable row at a position and depth:
>
> ``` xojo
> Table1.AddExpandableRowAt(0, "Berlin")
> ```

<div id="desktoptable.addlistselectionnotificationreceiver">

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

</div>

<div class="rst-class">

forsearch

</div>

DesktopTable.AddListSelectionNotificationReceiver

**AddListSelectionNotificationReceiver**(receiver As `ListSelectionNotificationReceiver</api/language/listselectionnotificationreceiver>`)

> Registers a `ListSelectionNotificationReceiver`. The receiver is told about every selection change, which is how a database-bound control follows the table without a selection event of its own.
>
> This example registers a receiver that follows the selection:
>
> ``` xojo
> Table1.AddListSelectionNotificationReceiver(receiver)
> ```

<div id="desktoptable.addrow">

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

</div>

<div class="rst-class">

forsearch

</div>

DesktopTable.AddRow

**AddRow**(items() As `String</api/data_types/string>`)

> Appends a new row; the array fills consecutive columns.
>
> If you want to improve performance when adding and removing rows, you can set `AllowRowAnimation<desktoptable.allowrowanimation>` to `False</api/language/false>`.

**AddRow**(`ParamArray</api/language/paramarray>` item As `String</api/data_types/string>`)

> Appends a new row; multiple parameters fill consecutive columns.
>
> If you want to improve performance when adding and removing rows, you can set `AllowRowAnimation<desktoptable.allowrowanimation>` to `False</api/language/false>`.
>
> This example adds a row in one go and another one cell by cell:
>
> ``` xojo
> Table1.AddRow("Anna", "Berlin")
>
> ' A row added one cell at a time
> Table1.AddRow("")
> Table1.CellTextAt(Table1.LastAddedRowIndex, 0) = "Bob"
> ```

<div id="desktoptable.addrowat">

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

</div>

<div class="rst-class">

forsearch

</div>

DesktopTable.AddRowAt

**AddRowAt**(row As `Integer</api/data_types/integer>`, text As `String</api/data_types/string>`, depth As `Integer</api/data_types/integer>` = 0)

> Inserts a *row* at a position and hierarchy *depth*. An index beyond the last row appends. *depth* places the row inside the hierarchy below its parent.
>
> If you want to improve performance when adding and removing rows, you can set `AllowRowAnimation<desktoptable.allowrowanimation>` to `False</api/language/false>`.
>
> This example inserts a row at a position and hierarchy depth:
>
> ``` xojo
> Table1.AddRowAt(0, "Berlin")
> ```

<div id="desktoptable.cellalignmentat">

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

</div>

<div class="rst-class">

forsearch

</div>

DesktopTable.CellAlignmentAt

**CellAlignmentAt**(row As `Integer</api/data_types/integer>`, column As `Integer</api/data_types/integer>`) As `DesktopTable.Alignments<desktoptable.alignments>`

> Alignment of a cell.
>
> This example reads the alignment of a cell:
>
> ``` xojo
> Var value As DesktopTable.Alignments = Table1.CellAlignmentAt(0, 1)
> ```

**CellAlignmentAt**(row As `Integer</api/data_types/integer>`, column As `Integer</api/data_types/integer>`, `Assigns</api/language/assigns>` value As `DesktopTable.Alignments<desktoptable.alignments>`)

> Sets the alignment of a cell (`AllRows</api/user_interface/desktop/desktoptable/constants>` or `AllColumns</api/user_interface/desktop/desktoptable/constants>`).
>
> This example sets the alignment of a cell:
>
> ``` xojo
> Table1.CellAlignmentAt(0, 1) = DesktopTable.Alignments.Right
> ```

<div id="desktoptable.cellalignmentoffsetat">

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

</div>

<div class="rst-class">

forsearch

</div>

DesktopTable.CellAlignmentOffsetAt

**CellAlignmentOffsetAt**(row As `Integer</api/data_types/integer>`, column As `Integer</api/data_types/integer>`) As `Integer</api/data_types/integer>`

> Distance of the alignment point from the right cell edge in points.
>
> This example reads the distance of the alignment point from the right cell edge in points:
>
> ``` xojo
> Var value As Integer = Table1.CellAlignmentOffsetAt(0, 1)
> ```

**CellAlignmentOffsetAt**(row As `Integer</api/data_types/integer>`, column As `Integer</api/data_types/integer>`, `Assigns</api/language/assigns>` value As `Integer</api/data_types/integer>`)

> Sets the alignment offset of a cell (`AllRows</api/user_interface/desktop/desktoptable/constants>` or `AllColumns</api/user_interface/desktop/desktoptable/constants>`). It applies to that cell only: the offset of its column, and with it the other cells and the heading, stays as it is, the same as in a list box. In a checkbox cell (`CellTypes<desktoptable.celltypes>`.CheckBox) the checkbox moves along with the text, by the same distance.
>
> This example moves the text of a single cell 50 points to the right:
>
> ``` xojo
> Table1.CellAlignmentOffsetAt(0, 1) = 50
> ```

<div id="desktoptable.cellboldat">

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

</div>

<div class="rst-class">

forsearch

</div>

DesktopTable.CellBoldAt

**CellBoldAt**(row As `Integer</api/data_types/integer>`, column As `Integer</api/data_types/integer>`) As `Boolean</api/data_types/boolean>`

> Bold style of a cell.
>
> This example reads the bold style of a cell:
>
> ``` xojo
> Var value As Boolean = Table1.CellBoldAt(0, 1)
> ```

**CellBoldAt**(row As `Integer</api/data_types/integer>`, column As `Integer</api/data_types/integer>`, `Assigns</api/language/assigns>` value As `Boolean</api/data_types/boolean>`)

> Sets the bold style of a cell (`AllRows</api/user_interface/desktop/desktoptable/constants>` or `AllColumns</api/user_interface/desktop/desktoptable/constants>`).
>
> This example sets the bold style of a cell:
>
> ``` xojo
> Table1.CellBoldAt(0, 1) = True
> ```

<div id="desktoptable.cellbordercolorat">

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

</div>

<div class="rst-class">

forsearch

</div>

DesktopTable.CellBorderColorAt

**CellBorderColorAt**(row As `Integer</api/data_types/integer>`, column As `Integer</api/data_types/integer>`) As `ColorGroup</api/graphics/colorgroup>`

> Border color of a cell.
>
> This example reads the border color of a cell:
>
> ``` xojo
> Var value As ColorGroup = Table1.CellBorderColorAt(0, 1)
> ```

**CellBorderColorAt**(row As `Integer</api/data_types/integer>`, column As `Integer</api/data_types/integer>`, `Assigns</api/language/assigns>` value As `ColorGroup</api/graphics/colorgroup>`)

> Sets the border color of a cell (`AllRows</api/user_interface/desktop/desktoptable/constants>` or `AllColumns</api/user_interface/desktop/desktoptable/constants>`).
>
> This example sets the border color of a cell:
>
> ``` xojo
> Table1.CellBorderColorAt(0, 1) = New ColorGroup(&cD93025, &cC5372C)
> ```

<div id="desktoptable.cellboundsat">

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

</div>

<div class="rst-class">

forsearch

</div>

DesktopTable.CellBoundsAt

**CellBoundsAt**(row As `Integer</api/data_types/integer>`, column As `Integer</api/data_types/integer>`) As `Rect</api/graphics/rect>`

> The cell's rectangle in the table's own coordinates - scroll, frozen bands and RTL applied; merge anchors report the merged rectangle.
>
> This example places a control of your own over a cell:
>
> ``` xojo
> ' Place your own control over a cell
> Var r As Rect = Table1.CellBoundsAt(2, 1)
>
> ProgressBar1.Left = Table1.Left + r.Left
> ProgressBar1.Top = Table1.Top + r.Top
> ProgressBar1.Width = r.Width
> ```

<div id="desktoptable.cellcheckboxenabledat">

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

</div>

<div class="rst-class">

forsearch

</div>

DesktopTable.CellCheckBoxEnabledAt

**CellCheckBoxEnabledAt**(row As `Integer</api/data_types/integer>`, column As `Integer</api/data_types/integer>`) As `Boolean</api/data_types/boolean>`

> Whether a checkbox cell is clickable (default: `True</api/language/true>`).
>
> This example reads whether a checkbox cell is clickable:
>
> ``` xojo
> Var value As Boolean = Table1.CellCheckBoxEnabledAt(0, 1)
> ```

**CellCheckBoxEnabledAt**(row As `Integer</api/data_types/integer>`, column As `Integer</api/data_types/integer>`, `Assigns</api/language/assigns>` value As `Boolean</api/data_types/boolean>`)

> Enables/disables a checkbox cell (`AllRows</api/user_interface/desktop/desktoptable/constants>` or `AllColumns</api/user_interface/desktop/desktoptable/constants>`).
>
> This example sets the enables/disables a checkbox cell:
>
> ``` xojo
> Table1.CellCheckBoxEnabledAt(0, 1) = True
> ```

<div id="desktoptable.cellcheckboxstateat">

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

</div>

<div class="rst-class">

forsearch

</div>

DesktopTable.CellCheckBoxStateAt

**CellCheckBoxStateAt**(row As `Integer</api/data_types/integer>`, column As `Integer</api/data_types/integer>`) As `DesktopCheckBox.VisualStates<desktopcheckbox.visualstates>`

> State (Checked/Unchecked/Indeterminate) of a checkbox cell.
>
> This example reads the state (Checked/Unchecked/Indeterminate) of a checkbox cell:
>
> ``` xojo
> Var value As DesktopCheckBox.VisualStates = Table1.CellCheckBoxStateAt(0, 1)
> ```

**CellCheckBoxStateAt**(row As `Integer</api/data_types/integer>`, column As `Integer</api/data_types/integer>`, `Assigns</api/language/assigns>` value As `DesktopCheckBox.VisualStates<desktopcheckbox.visualstates>`)

> Sets the state of a checkbox cell (`AllRows</api/user_interface/desktop/desktoptable/constants>` or `AllColumns</api/user_interface/desktop/desktoptable/constants>`).
>
> This example sets the state of a checkbox cell:
>
> ``` xojo
> Table1.CellCheckBoxStateAt(0, 1) = DesktopCheckBox.VisualStates.Checked
> ```

<div id="desktoptable.cellcheckboxvalueat">

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

</div>

<div class="rst-class">

forsearch

</div>

DesktopTable.CellCheckBoxValueAt

**CellCheckBoxValueAt**(row As `Integer</api/data_types/integer>`, column As `Integer</api/data_types/integer>`) As `Boolean</api/data_types/boolean>`

> Value of a checkbox cell.
>
> This example reads the value of a checkbox cell:
>
> ``` xojo
> Var value As Boolean = Table1.CellCheckBoxValueAt(0, 1)
> ```

**CellCheckBoxValueAt**(row As `Integer</api/data_types/integer>`, column As `Integer</api/data_types/integer>`, `Assigns</api/language/assigns>` value As `Boolean</api/data_types/boolean>`)

> Sets the *value* of a checkbox cell.
>
> This example sets the value of a checkbox cell:
>
> ``` xojo
> Table1.CellCheckBoxValueAt(0, 1) = True
> ```

<div id="desktoptable.cellismerged">

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

</div>

<div class="rst-class">

forsearch

</div>

DesktopTable.CellIsMerged

**CellIsMerged**(row As `Integer</api/data_types/integer>`, column As `Integer</api/data_types/integer>`) As `Boolean</api/data_types/boolean>`

> Whether a cell belongs to a merge (anchor or covered). It is `True</api/language/true>` for the anchor as well as for every cell the merge covers. `CellMergeBounds<desktoptable.cellmergebounds>` reports the extent.
>
> This example reads whether a cell belongs to a merge:
>
> ``` xojo
> Var value As Boolean = Table1.CellIsMerged(0, 1)
> ```

<div id="desktoptable.cellitalicat">

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

</div>

<div class="rst-class">

forsearch

</div>

DesktopTable.CellItalicAt

**CellItalicAt**(row As `Integer</api/data_types/integer>`, column As `Integer</api/data_types/integer>`) As `Boolean</api/data_types/boolean>`

> Italic style of a cell.
>
> This example reads the italic style of a cell:
>
> ``` xojo
> Var value As Boolean = Table1.CellItalicAt(0, 1)
> ```

**CellItalicAt**(row As `Integer</api/data_types/integer>`, column As `Integer</api/data_types/integer>`, `Assigns</api/language/assigns>` value As `Boolean</api/data_types/boolean>`)

> Sets the italic style of a cell (`AllRows</api/user_interface/desktop/desktoptable/constants>` or `AllColumns</api/user_interface/desktop/desktoptable/constants>`).
>
> This example sets the italic style of a cell:
>
> ``` xojo
> Table1.CellItalicAt(0, 1) = True
> ```

<div id="desktoptable.cellmergebounds">

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

</div>

<div class="rst-class">

forsearch

</div>

DesktopTable.CellMergeBounds

**CellMergeBounds**(row As `Integer</api/data_types/integer>`, column As `Integer</api/data_types/integer>`, `ByRef</api/language/byref>` anchorRow As `Integer</api/data_types/integer>`, `ByRef</api/language/byref>` anchorColumn As `Integer</api/data_types/integer>`, `ByRef</api/language/byref>` rowSpan As `Integer</api/data_types/integer>`, `ByRef</api/language/byref>` columnSpan As `Integer</api/data_types/integer>`) As `Boolean</api/data_types/boolean>`

> Anchor and span of the merge covering the cell; `False</api/language/false>` if unmerged, in which case the `ByRef` values are left untouched.
>
> This example reads the anchor and span of the merge covering the cell; False if unmerged, in which case the ByRef values are left untouched:
>
> ``` xojo
> Var value As Boolean = Table1.CellMergeBounds(0, 1, anchorRow, anchorColumn, rowSpan, columnSpan)
> ```

<div id="desktoptable.cellprogressbarmaximumvalueat">

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

</div>

<div class="rst-class">

forsearch

</div>

DesktopTable.CellProgressBarMaximumValueAt

**CellProgressBarMaximumValueAt**(row As `Integer</api/data_types/integer>`, column As `Integer</api/data_types/integer>`) As `Double</api/data_types/double>`

> Upper bound of a progress bar cell (default: 100).
>
> This example reads the upper bound of a progress bar cell:
>
> ``` xojo
> Var value As Double = Table1.CellProgressBarMaximumValueAt(0, 1)
> ```

**CellProgressBarMaximumValueAt**(row As `Integer</api/data_types/integer>`, column As `Integer</api/data_types/integer>`, `Assigns</api/language/assigns>` value As `Double</api/data_types/double>`)

> Sets the upper bound of a progress bar cell (`AllRows</api/user_interface/desktop/desktoptable/constants>` or `AllColumns</api/user_interface/desktop/desktoptable/constants>`). Unlike DesktopProgressBar a *value* \<= 0 does NOT switch to an indeterminate bar (a cell has no animation) - the bar simply stays empty.
>
> This example sets the upper bound of a progress bar cell:
>
> ``` xojo
> Table1.CellProgressBarMaximumValueAt(0, 1) = 1.0
> ```

<div id="desktoptable.cellprogressbarvalueat">

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

</div>

<div class="rst-class">

forsearch

</div>

DesktopTable.CellProgressBarValueAt

**CellProgressBarValueAt**(row As `Integer</api/data_types/integer>`, column As `Integer</api/data_types/integer>`) As `Double</api/data_types/double>`

> Current value of a progress bar cell.
>
> This example reads the current value of a progress bar cell:
>
> ``` xojo
> Var value As Double = Table1.CellProgressBarValueAt(0, 1)
> ```

**CellProgressBarValueAt**(row As `Integer</api/data_types/integer>`, column As `Integer</api/data_types/integer>`, `Assigns</api/language/assigns>` value As `Double</api/data_types/double>`)

> Sets the *value* of a progress bar cell (`AllRows</api/user_interface/desktop/desktoptable/constants>` or `AllColumns</api/user_interface/desktop/desktoptable/constants>`). The *value* is stored unchanged; only the drawing clamps it to 0 .. MaximumValue.
>
> This example sets the value of a progress bar cell:
>
> ``` xojo
> Table1.CellProgressBarValueAt(0, 1) = 1.0
> ```

<div id="desktoptable.celltagat">

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

</div>

<div class="rst-class">

forsearch

</div>

DesktopTable.CellTagAt

**CellTagAt**(row As `Integer</api/data_types/integer>`, column As `Integer</api/data_types/integer>`) As `Variant</api/data_types/variant>`

> Invisible companion value of a cell.
>
> This example reads the invisible companion value of a cell:
>
> ``` xojo
> Var value As Variant = Table1.CellTagAt(0, 1)
> ```

**CellTagAt**(row As `Integer</api/data_types/integer>`, column As `Integer</api/data_types/integer>`, `Assigns</api/language/assigns>` value As `Variant</api/data_types/variant>`)

> Sets the companion *value* of a cell (`AllRows</api/user_interface/desktop/desktoptable/constants>` or `AllColumns</api/user_interface/desktop/desktoptable/constants>`).
>
> This example sets the companion value of a cell:
>
> ``` xojo
> Table1.CellTagAt(0, 1) = "myTag"
> ```

<div id="desktoptable.celltextat">

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

</div>

<div class="rst-class">

forsearch

</div>

DesktopTable.CellTextAt

**CellTextAt**(row As `Integer</api/data_types/integer>`, column As `Integer</api/data_types/integer>` = 0) As `String</api/data_types/string>`

> Text of a cell. *row* = `AllRows</api/user_interface/desktop/desktoptable/constants>` returns the whole *column* (EndOfLine-separated), *column* = `AllColumns</api/user_interface/desktop/desktoptable/constants>` the whole *row* (tab-separated).

**CellTextAt**(row As `Integer</api/data_types/integer>`, column As `Integer</api/data_types/integer>` = 0, `Assigns</api/language/assigns>` value As `String</api/data_types/string>`)

> Sets the text of a cell. *row* = `AllRows</api/user_interface/desktop/desktoptable/constants>` distributes an EndOfLine-separated *value* across the *column*, *column* = `AllColumns</api/user_interface/desktop/desktoptable/constants>` a tab-separated *value* across the *row*.
>
> This example reads and writes a cell, and reads a whole row:
>
> ``` xojo
> Var name As String = Table1.CellTextAt(3, 0)
> Table1.CellTextAt(3, 1) = "Hamburg"
>
> ' row = -1 returns a whole column, column = -1 a whole row (Tab-separated)
> Var wholeRow As String = Table1.CellTextAt(3, -1)
> ```

<div id="desktoptable.celltooltipat">

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

</div>

<div class="rst-class">

forsearch

</div>

DesktopTable.CellTooltipAt

**CellTooltipAt**(row As `Integer</api/data_types/integer>`, column As `Integer</api/data_types/integer>`) As `String</api/data_types/string>`

> Tooltip of a cell.
>
> This example reads the tooltip of a cell:
>
> ``` xojo
> Var value As String = Table1.CellTooltipAt(0, 1)
> ```

**CellTooltipAt**(row As `Integer</api/data_types/integer>`, column As `Integer</api/data_types/integer>`, `Assigns</api/language/assigns>` value As `String</api/data_types/string>`)

> Sets the tooltip of a cell (`AllRows</api/user_interface/desktop/desktoptable/constants>` or `AllColumns</api/user_interface/desktop/desktoptable/constants>`).
>
> This example sets the tooltip of a cell:
>
> ``` xojo
> Table1.CellTooltipAt(0, 1) = "Berlin"
> ```

<div id="desktoptable.celltypeat">

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

</div>

<div class="rst-class">

forsearch

</div>

DesktopTable.CellTypeAt

**CellTypeAt**(row As `Integer</api/data_types/integer>`, column As `Integer</api/data_types/integer>`) As `DesktopTable.CellTypes<desktoptable.celltypes>`

> Type of a cell; Default means: the *column* type applies.
>
> This example reads the type of a cell; Default means: the column type applies:
>
> ``` xojo
> Var value As DesktopTable.CellTypes = Table1.CellTypeAt(0, 1)
> ```

**CellTypeAt**(row As `Integer</api/data_types/integer>`, column As `Integer</api/data_types/integer>`, `Assigns</api/language/assigns>` value As `DesktopTable.CellTypes<desktoptable.celltypes>`)

> Sets the type of a cell, overriding the *column* type (`AllRows</api/user_interface/desktop/desktoptable/constants>` or `AllColumns</api/user_interface/desktop/desktoptable/constants>`).
>
> This example sets the type of a cell, overriding the column type:
>
> ``` xojo
> Table1.CellTypeAt(0, 1) = DesktopTable.CellTypes.CheckBox
> ```

<div id="desktoptable.cellunderlineat">

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

</div>

<div class="rst-class">

forsearch

</div>

DesktopTable.CellUnderlineAt

**CellUnderlineAt**(row As `Integer</api/data_types/integer>`, column As `Integer</api/data_types/integer>`) As `Boolean</api/data_types/boolean>`

> Underline style of a cell.
>
> This example reads the underline style of a cell:
>
> ``` xojo
> Var value As Boolean = Table1.CellUnderlineAt(0, 1)
> ```

**CellUnderlineAt**(row As `Integer</api/data_types/integer>`, column As `Integer</api/data_types/integer>`, `Assigns</api/language/assigns>` value As `Boolean</api/data_types/boolean>`)

> Sets the underline style of a cell (`AllRows</api/user_interface/desktop/desktoptable/constants>` or `AllColumns</api/user_interface/desktop/desktoptable/constants>`).
>
> This example sets the underline style of a cell:
>
> ``` xojo
> Table1.CellUnderlineAt(0, 1) = True
> ```

<div id="desktoptable.close">

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

</div>

<div class="rst-class">

forsearch

</div>

DesktopTable.Close

**Close**

> Closes a control.
>
> Closing a control permanently removes the control from memory, making it impossible to access. You can close both non-indexed controls and indexed controls. When you close an indexed control, the indexes for the remaining controls will shift downward so that the indexes start with zero and are consecutive.
>
> The following code closes the control. When this is executed from a visible control, the control disappears from the window.
>
> ``` xojo
> Me.Close
> ```

<div id="desktoptable.collapseallrows">

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

</div>

<div class="rst-class">

forsearch

</div>

DesktopTable.CollapseAllRows

**CollapseAllRows**

> Collapses every expanded row, top to bottom. Collapsing a row removes its whole subtree in one step (see CollapseRowInternal), so descendants are never visited individually - a single forward pass over the shrinking row list is enough, and DataRowCount is re-read every iteration to reflect that shrink.
>
> This example collapses every expanded row, top to bottom:
>
> ``` xojo
> Table1.CollapseAllRows
> ```

<div id="desktoptable.columnalignmentat">

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

</div>

<div class="rst-class">

forsearch

</div>

DesktopTable.ColumnAlignmentAt

**ColumnAlignmentAt**(column As `Integer</api/data_types/integer>`) As `DesktopTable.Alignments<desktoptable.alignments>`

> Alignment of a *column*.
>
> This example reads the alignment of a column:
>
> ``` xojo
> Var value As DesktopTable.Alignments = Table1.ColumnAlignmentAt(1)
> ```

**ColumnAlignmentAt**(column As `Integer</api/data_types/integer>`, `Assigns</api/language/assigns>` value As `DesktopTable.Alignments<desktoptable.alignments>`)

> Sets the alignment of a *column* (`AllColumns</api/user_interface/desktop/desktoptable/constants>`).
>
> This example sets the alignment of a column:
>
> ``` xojo
> Table1.ColumnAlignmentAt(1) = DesktopTable.Alignments.Right
> ```

<div id="desktoptable.columnalignmentoffsetat">

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

</div>

<div class="rst-class">

forsearch

</div>

DesktopTable.ColumnAlignmentOffsetAt

**ColumnAlignmentOffsetAt**(column As `Integer</api/data_types/integer>`) As `Integer</api/data_types/integer>`

> Alignment offset of a *column* in points.
>
> This example reads the alignment offset of a column in points:
>
> ``` xojo
> Var value As Integer = Table1.ColumnAlignmentOffsetAt(1)
> ```

**ColumnAlignmentOffsetAt**(column As `Integer</api/data_types/integer>`, `Assigns</api/language/assigns>` value As `Integer</api/data_types/integer>`)

> Sets the alignment offset of a *column* (`AllColumns</api/user_interface/desktop/desktoptable/constants>`). In checkbox cells (`CellTypes<desktoptable.celltypes>`.CheckBox) the checkbox moves along with the text, by the same distance.
>
> This example sets the alignment offset of a column:
>
> ``` xojo
> Table1.ColumnAlignmentOffsetAt(1) = 0
> ```

<div id="desktoptable.columnattributesat">

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

</div>

<div class="rst-class">

forsearch

</div>

DesktopTable.ColumnAttributesAt

**ColumnAttributesAt**(column As `Integer</api/data_types/integer>`) As `DesktopTableColumn</api/user_interface/desktop/desktoptablecolumn>`

> Returns the *column* attribute object; `AllColumns</api/user_interface/desktop/desktoptable/constants>` affects all columns.
>
> This example returns the column attribute object; AllColumns affects all columns:
>
> ``` xojo
> Var value As DesktopTableColumn = Table1.ColumnAttributesAt(1)
> ```

**ColumnAttributesAt**(column As `Integer</api/data_types/integer>`, `Assigns</api/language/assigns>` value As `DesktopTableColumn</api/user_interface/desktop/desktoptablecolumn>`)

> Applies the attributes of the passed object to the *column*(s).
>
> This example sets the applies the attributes of the passed object to the column:
>
> ``` xojo
> Table1.ColumnAttributesAt(1) = myColumn
> ```

<div id="desktoptable.columnfromxy">

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

</div>

<div class="rst-class">

forsearch

</div>

DesktopTable.ColumnFromXY

**ColumnFromXY**(x As `Integer</api/data_types/integer>`, y As `Integer</api/data_types/integer>`) As `Integer</api/data_types/integer>`

> Column index at a control-space point, `-1` outside. The point is in the table's own coordinates, as the mouse events deliver them. A hidden column is never returned, and a point over the header or outside the table gives -1.
>
> This example reads the column index at a control-space point, -1 outside:
>
> ``` xojo
> Var value As Integer = Table1.ColumnFromXY(10, 20)
> ```

<div id="desktoptable.columnheaderat">

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

</div>

<div class="rst-class">

forsearch

</div>

DesktopTable.ColumnHeaderAt

**ColumnHeaderAt**(index As `Integer</api/data_types/integer>`) As `String</api/data_types/string>`

> Heading of a column.
>
> This example reads the heading of a column:
>
> ``` xojo
> Var value As String = Table1.ColumnHeaderAt(0)
> ```

**ColumnHeaderAt**(index As `Integer</api/data_types/integer>`, `Assigns</api/language/assigns>` value As `String</api/data_types/string>`)

> Sets the column heading. *index* = `AllColumns</api/user_interface/desktop/desktoptable/constants>` distributes a tab-separated *value* across all columns. "" resets to the default.
>
> This example sets the column heading:
>
> ``` xojo
> Table1.ColumnHeaderAt(0) = "Berlin"
> ```

<div id="desktoptable.columns">

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

</div>

<div class="rst-class">

forsearch

</div>

DesktopTable.Columns

**Columns** As `Iterable</api/language/iterable>`

> Allows For Each column As DesktopTableColumn In table.Columns. The objects handed out are `DesktopTableColumn</api/user_interface/desktop/desktoptablecolumn>` accessors, so a loop can change widths and visibility directly.
>
> This example allows For Each column As DesktopTableColumn In table.Columns:
>
> ``` xojo
> For Each c As DesktopTableColumn In Table1.Columns
>   c.UserResizable = False
> Next
> ```

<div id="desktoptable.columnsortdirectionat">

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

</div>

<div class="rst-class">

forsearch

</div>

DesktopTable.ColumnSortDirectionAt

**ColumnSortDirectionAt**(column As `Integer</api/data_types/integer>`) As `DesktopTable.SortDirections<desktoptable.sortdirections>`

> Sort direction of a *column*.
>
> This example reads the sort direction of a column:
>
> ``` xojo
> Var value As DesktopTable.SortDirections = Table1.ColumnSortDirectionAt(1)
> ```

**ColumnSortDirectionAt**(column As `Integer</api/data_types/integer>`, `Assigns</api/language/assigns>` value As `DesktopTable.SortDirections<desktoptable.sortdirections>`)

> Sets the sort direction of a *column*; None disables sorting via the header.
>
> This example sets the sort direction of a column; None disables sorting via the header:
>
> ``` xojo
> Table1.ColumnSortDirectionAt(1) = DesktopTable.SortDirections.Ascending
> ```

<div id="desktoptable.columnsorttypeat">

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

</div>

<div class="rst-class">

forsearch

</div>

DesktopTable.ColumnSortTypeAt

**ColumnSortTypeAt**(column As `Integer</api/data_types/integer>`) As `DesktopTable.SortTypes<desktoptable.sorttypes>`

> Sortability of a *column*.
>
> This example reads the sortability of a column:
>
> ``` xojo
> Var value As DesktopTable.SortTypes = Table1.ColumnSortTypeAt(1)
> ```

**ColumnSortTypeAt**(column As `Integer</api/data_types/integer>`, `Assigns</api/language/assigns>` value As `DesktopTable.SortTypes<desktoptable.sorttypes>`)

> Sets the sortability of a *column* (`AllColumns</api/user_interface/desktop/desktoptable/constants>`).
>
> This example sets the sortability of a column:
>
> ``` xojo
> Table1.ColumnSortTypeAt(1) = DesktopTable.SortTypes.Sortable
> ```

<div id="desktoptable.columntagat">

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

</div>

<div class="rst-class">

forsearch

</div>

DesktopTable.ColumnTagAt

**ColumnTagAt**(column As `Integer</api/data_types/integer>`) As `Variant</api/data_types/variant>`

> Companion value of a *column*.
>
> This example reads the companion value of a column:
>
> ``` xojo
> Var value As Variant = Table1.ColumnTagAt(1)
> ```

**ColumnTagAt**(column As `Integer</api/data_types/integer>`, `Assigns</api/language/assigns>` value As `Variant</api/data_types/variant>`)

> Sets the companion *value* of a *column* (`AllColumns</api/user_interface/desktop/desktoptable/constants>`).
>
> This example sets the companion value of a column:
>
> ``` xojo
> Table1.ColumnTagAt(1) = "myTag"
> ```

<div id="desktoptable.columntypeat">

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

</div>

<div class="rst-class">

forsearch

</div>

DesktopTable.ColumnTypeAt

**ColumnTypeAt**(column As `Integer</api/data_types/integer>`) As `DesktopTable.CellTypes<desktoptable.celltypes>`

> Type of a *column*.
>
> This example reads the type of a column:
>
> ``` xojo
> Var value As DesktopTable.CellTypes = Table1.ColumnTypeAt(1)
> ```

**ColumnTypeAt**(column As `Integer</api/data_types/integer>`, `Assigns</api/language/assigns>` value As `DesktopTable.CellTypes<desktoptable.celltypes>`)

> Sets the type of a *column*; individual cells can override it via CellTypeAt.
>
> This example sets the type of a column; individual cells can override it via CellTypeAt:
>
> ``` xojo
> Table1.ColumnTypeAt(1) = DesktopTable.CellTypes.CheckBox
> ```

<div id="desktoptable.columnvisibleat">

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

</div>

<div class="rst-class">

forsearch

</div>

DesktopTable.ColumnVisibleAt

**ColumnVisibleAt**(index As `Integer</api/data_types/integer>`) As `Boolean</api/data_types/boolean>`

> `True</api/language/true>` if the column is shown.

**ColumnVisibleAt**(index As `Integer</api/data_types/integer>`, `Assigns</api/language/assigns>` value As `Boolean</api/data_types/boolean>`)

> Shows or hides the column (`AllColumns</api/user_interface/desktop/desktoptable/constants>`). A hidden column keeps its data, width expressions and *index* - it only takes no space: the layout gives it width 0, it raises no paint events, and it cannot be hit, resized, dragged or edited.
>
> This example hides a single column and shows every column again:
>
> ``` xojo
> ' Hide the second column without removing it
> Table1.ColumnVisibleAt(1) = False
>
> ' Show every column again
> Table1.ColumnVisibleAt(DesktopTable.AllColumns) = True
> ```

<div id="desktoptable.containerforcellat">

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

</div>

<div class="rst-class">

forsearch

</div>

DesktopTable.ContainerForCellAt

**ContainerForCellAt**(row As `Integer</api/data_types/integer>`, column As `Integer</api/data_types/integer>`) As `DesktopContainer</api/user_interface/desktop/desktopcontainer>`

> The container currently shown in a cell, or `Nil</api/language/nil>`. It exists only while the cell is on screen: the table asks `ContainerAt<desktoptable.containerat>` when a cell appears and lets the instance go again when the cell leaves.
>
> This example reads the container of a cell:
>
> ``` xojo
> Var container As DesktopContainer = Table1.ContainerForCellAt(0, 2)
> ```

<div id="desktoptable.drawinto">

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

</div>

<div class="rst-class">

forsearch

</div>

DesktopTable.DrawInto

**DrawInto**(g As `Graphics</api/graphics/graphics>`, left As `Integer</api/data_types/integer>`, top As `Integer</api/data_types/integer>`)

> Renders the table into another `Graphics` context. It draws the table as it currently looks, which is how it ends up in a printout or in a picture.
>
> This example renders the table into another Graphics context:
>
> ``` xojo
> Table1.DrawInto(g, 10, 10)
> ```

<div id="desktoptable.editcellat">

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

</div>

<div class="rst-class">

forsearch

</div>

DesktopTable.EditCellAt

**EditCellAt**(row As `Integer</api/data_types/integer>`, column As `Integer</api/data_types/integer>`)

> Scrolls the cell into view and starts inline editing. The cell must be of type TextField or TextArea, set through `CellTypeAt<desktoptable.celltypeat>` or `ColumnTypeAt<desktoptable.columntypeat>`. A cell in a hidden column cannot be edited, and an editor that is already open is committed first.
>
> This example scrolls the cell into view and starts inline editing:
>
> ``` xojo
> Table1.EditCellAt(0, 1)
> ```

<div id="desktoptable.expandallrows">

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

</div>

<div class="rst-class">

forsearch

</div>

DesktopTable.ExpandAllRows

**ExpandAllRows**

> Expands every expandable row, including rows only revealed by expanding an earlier one. It works down the hierarchy, so children that only appear once their parent is open are expanded as well.
>
> This example expands every expandable row, including rows only revealed by expanding an earlier one:
>
> ``` xojo
> Table1.ExpandAllRows
> ```

<div id="desktoptable.mergecells">

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

</div>

<div class="rst-class">

forsearch

</div>

DesktopTable.MergeCells

**MergeCells**(row As `Integer</api/data_types/integer>`, column As `Integer</api/data_types/integer>`, rowSpan As `Integer</api/data_types/integer>`, columnSpan As `Integer</api/data_types/integer>`)

> Merges a rectangular range; `(row, column)` is the anchor. Raises `InvalidArgumentException<api/exceptions/invalidargumentexception>` on overlap. The anchor keeps the content and the styling; the cells it covers keep their data but are no longer drawn. A merge overlapping an existing one is refused.
>
> This example merges a rectangular range; (row, column) is the anchor:
>
> ``` xojo
> Table1.MergeCells(0, 1, 2, 3)
> ```

<div id="desktoptable.open">

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

</div>

<div class="rst-class">

forsearch

</div>

DesktopTable.Open

**Open**(file As `FolderItem</api/files/folderitem>`, delimiter As `String</api/data_types/string>` = ",", importHeaders As `Boolean</api/data_types/boolean>` = `True</api/language/true>`)

> Reads a delimited text file in UTF-8 and replaces the entire content, so save anything you still need first. The delimiter has to match the file: a comma for CSV, `Chr(9)` for TSV. Quoted fields are unquoted following RFC 4180, the column count grows to the widest record, and in DataSource mode the call raises an `UnsupportedOperationException<api/exceptions/unsupportedoperationexception>`.
>
> This example reads a delimited text file in UTF-8 and replaces the entire content, so save anything you still need first:
>
> ``` xojo
> Table1.Open(f)
> ```

<div id="desktoptable.presscolumnheaderat">

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

</div>

<div class="rst-class">

forsearch

</div>

DesktopTable.PressColumnHeaderAt

**PressColumnHeaderAt**(column As `Integer</api/data_types/integer>`)

> Triggers a header click programmatically. It behaves as though the user had clicked the header: `ColumnHeaderPressed<desktoptable.columnheaderpressed>` fires and a sortable column is sorted.
>
> This example triggers a header click programmatically:
>
> ``` xojo
> Table1.PressColumnHeaderAt(1)
> ```

<div id="desktoptable.refresh">

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

</div>

<div class="rst-class">

forsearch

</div>

DesktopTable.Refresh

**Refresh**(immediately As `Boolean</api/data_types/boolean>` = `False</api/language/false>`)

> Redraws the portion specified of the contents of the control the next time the OS redraws the control or immediately if `True</api/language/true>` is passed.
>
> If you are calling this so frequently that you experience a slowdown in your code, pass `True</api/language/true>` for the immediately parameter.
>
> Calling this method causes the Render event to fire.
>
> Refresh the entire area immediately:
>
> ``` xojo
> Me.Refresh(True)
> ```

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

<div class="rst-class">

forsearch

</div>

DesktopTable.Refresh

**Refresh**(x As `Integer</api/data_types/integer>`, y As `Integer</api/data_types/integer>`, width As `Integer</api/data_types/integer>`, height As `Integer</api/data_types/integer>`, immediately As `Boolean</api/data_types/boolean>` = `False</api/language/false>`)

> Redraws the portion specified of the contents of the control the next time the OS redraws the control or immediately if `True</api/language/true>` is passed.
>
> Refresh a portion of the area the next time the OS redraws the control:
>
> ``` xojo
> Me.Refresh(100, 150, 200, 300)
> ```

<div id="desktoptable.refreshcellat">

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

</div>

<div class="rst-class">

forsearch

</div>

DesktopTable.RefreshCellAt

**RefreshCellAt**(row As `Integer</api/data_types/integer>`, column As `Integer</api/data_types/integer>`)

> Redraws one cell; `-1` for *row* or *column* redraws the whole *column* or *row*. Use it instead of a full refresh when a single value changed. If the cell is part of a merge, the whole merge is redrawn.
>
> This example redraws one cell; -1 for row or column redraws the whole column or row:
>
> ``` xojo
> Table1.RefreshCellAt(0, 1)
> ```

<div id="desktoptable.reloadfromdatasource">

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

</div>

<div class="rst-class">

forsearch

</div>

DesktopTable.ReloadFromDataSource

**ReloadFromDataSource**

> Re-reads row count, row heights and cell content from the data source. Selection and scroll position are kept, so it is the call to make after the data behind a `TableDataSource</api/interfaces/tabledatasource>` changed.
>
> This example re-reads row count, row heights and cell content from the data source:
>
> ``` xojo
> Table1.ReloadFromDataSource
> ```

<div id="desktoptable.removeallcolumns">

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

</div>

<div class="rst-class">

forsearch

</div>

DesktopTable.RemoveAllColumns

**RemoveAllColumns**

> Removes all columns (ColumnCount = 0, empty table). The cell content goes with the columns. The rows themselves remain, but without columns nothing is drawn.
>
> This example removes all columns:
>
> ``` xojo
> Table1.RemoveAllColumns
> ```

<div id="desktoptable.removeallmerges">

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

</div>

<div class="rst-class">

forsearch

</div>

DesktopTable.RemoveAllMerges

**RemoveAllMerges**

> Removes all cell merges. The cells keep the data they had before the merge.
>
> This example removes all cell merges:
>
> ``` xojo
> Table1.RemoveAllMerges
> ```

<div id="desktoptable.removeallrows">

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

</div>

<div class="rst-class">

forsearch

</div>

DesktopTable.RemoveAllRows

**RemoveAllRows**

> Removes all rows. With an editable data source the source is cleared, otherwise (in-memory only) the local storage.
>
> This example removes all rows:
>
> ``` xojo
> Table1.RemoveAllRows
> ```

<div id="desktoptable.removecolumnat">

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

</div>

<div class="rst-class">

forsearch

</div>

DesktopTable.RemoveColumnAt

**RemoveColumnAt**(index As `Integer</api/data_types/integer>`)

> Removes a column; columns to its right move left. The cells of that column are removed from every row, and merges, the sorting column and the heading index follow the shift.
>
> This example removes a column; columns to its right move left:
>
> ``` xojo
> Table1.RemoveColumnAt(0)
> ```

<div id="desktoptable.removelistselectionnotificationreceiver">

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

</div>

<div class="rst-class">

forsearch

</div>

DesktopTable.RemoveListSelectionNotificationReceiver

**RemoveListSelectionNotificationReceiver**(receiver As `ListSelectionNotificationReceiver</api/language/listselectionnotificationreceiver>`)

> Unregisters a *receiver*. Removing a receiver that was never registered does nothing.
>
> This example unregisters the receiver again:
>
> ``` xojo
> Table1.RemoveListSelectionNotificationReceiver(receiver)
> ```

<div id="desktoptable.removerowat">

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

</div>

<div class="rst-class">

forsearch

</div>

DesktopTable.RemoveRowAt

**RemoveRowAt**(index As `Integer</api/data_types/integer>`)

> Removes the row. With an editable data source it is removed (incl. subtree) from the source, otherwise from the in-memory storage.
>
> If you want to improve performance when adding and removing rows, you can set `AllowRowAnimation<desktoptable.allowrowanimation>` to `False</api/language/false>`.
>
> This example removes the row:
>
> ``` xojo
> Table1.RemoveRowAt(0)
> ```

<div id="desktoptable.reusablecontainer">

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

</div>

<div class="rst-class">

forsearch

</div>

DesktopTable.ReusableContainer

**ReusableContainer**(identifier As `String</api/data_types/string>`) As `DesktopContainer</api/user_interface/desktop/desktopcontainer>`

> Called from inside `ContainerAt<desktoptable.containerat>`: hands back a container an earlier cell has finished with, or `Nil</api/language/nil>` when there is none. The identifier is yours to choose, and a table whose cells hold containers of different kinds keeps them apart by it.
>
> With the reuse the table gets by with about as many instances as there are visible cells, however many rows it has. Without it every cell scrolling into view builds one of its own. How many are kept is `ContainerCacheSize<desktoptable.containercachesize>`.
>
> This example asks for a used instance and builds one only when there is none:
>
> ``` xojo
> Var container As DesktopContainer = Me.ReusableContainer("CurrencyContainer")
>
> If container = Nil Then
>   container = New CurrencyContainer
> End If
> ```

<div id="desktoptable.rowat">

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

</div>

<div class="rst-class">

forsearch

</div>

DesktopTable.RowAt

**RowAt**(row As `Integer</api/data_types/integer>`) As `DesktopTableRow</api/user_interface/desktop/desktoptablerow>`

> Lightweight read-only accessor for one *row*. The object reads what the table currently holds for that row index, so it is a view of the row rather than a copy. Changing a value goes through the table, for example `CellTextAt<desktoptable.celltextat>`.
>
> This example reads the lightweight read-only accessor for one row:
>
> ``` xojo
> Var value As DesktopTableRow = Table1.RowAt(0)
> ```

<div id="desktoptable.rowdepthat">

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

</div>

<div class="rst-class">

forsearch

</div>

DesktopTable.RowDepthAt

**RowDepthAt**(row As `Integer</api/data_types/integer>`) As `Integer</api/data_types/integer>`

> Hierarchy depth of a *row* (0 = top level). The depth is what the table indents by and what a disclosure widget opens into.
>
> This example reads the hierarchy depth of a row:
>
> ``` xojo
> Var value As Integer = Table1.RowDepthAt(0)
> ```

<div id="desktoptable.rowexpandableat">

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

</div>

<div class="rst-class">

forsearch

</div>

DesktopTable.RowExpandableAt

**RowExpandableAt**(row As `Integer</api/data_types/integer>`) As `Boolean</api/data_types/boolean>`

> `True</api/language/true>` if the *row* shows a disclosure widget. Only a row marked as expandable can be opened by the user, and only while `AllowExpandableRows<desktoptable.allowexpandablerows>` is on.
>
> This example reads the true if the row shows a disclosure widget:
>
> ``` xojo
> Var value As Boolean = Table1.RowExpandableAt(0)
> ```

**RowExpandableAt**(row As `Integer</api/data_types/integer>`, `Assigns</api/language/assigns>` value As `Boolean</api/data_types/boolean>`)

> Shows or hides the *row*'s disclosure widget.
>
> This example shows or hides the row's disclosure widget:
>
> ``` xojo
> Table1.RowExpandableAt(0) = True
> ```

<div id="desktoptable.rowexpandedat">

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

</div>

<div class="rst-class">

forsearch

</div>

DesktopTable.RowExpandedAt

**RowExpandedAt**(row As `Integer</api/data_types/integer>`) As `Boolean</api/data_types/boolean>`

> Disclosure state of a *row*.
>
> This example reads the disclosure state of a row:
>
> ``` xojo
> Var value As Boolean = Table1.RowExpandedAt(0)
> ```

**RowExpandedAt**(row As `Integer</api/data_types/integer>`, `Assigns</api/language/assigns>` value As `Boolean</api/data_types/boolean>`)

> Expands or collapses the *row* and fires RowExpanded or RowCollapsed.
>
> This example expands or collapses the row and fires RowExpanded or RowCollapsed:
>
> ``` xojo
> Table1.RowExpandedAt(0) = True
> ```

<div id="desktoptable.rowforcontainer">

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

</div>

<div class="rst-class">

forsearch

</div>

DesktopTable.RowForContainer

**RowForContainer**(container As `DesktopContainer</api/user_interface/desktop/desktopcontainer>`) As `Integer</api/data_types/integer>`

> The row a container is currently shown in, or -1.
>
> A reused container cannot remember its own row: row numbers move with every insertion, removal and sort, and the same instance serves other rows later. So a control inside the container asks at the moment it is used.
>
> This example writes the value of a control back into the row its container serves:
>
> ``` xojo
> Var row As Integer = Table1.RowForContainer(sender)
> If row < 0 Then Return
>
> Table1.CellTagAt(row, 2) = value
> ```

<div id="desktoptable.rowfromxy">

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

</div>

<div class="rst-class">

forsearch

</div>

DesktopTable.RowFromXY

**RowFromXY**(x As `Integer</api/data_types/integer>`, y As `Integer</api/data_types/integer>`) As `Integer</api/data_types/integer>`

> Row index at a control-space point, `-1` outside. The point is in the table's own coordinates, as the mouse events deliver them. A point over the header or below the last row gives -1.
>
> This example reads the row index at a control-space point, -1 outside:
>
> ``` xojo
> Var value As Integer = Table1.RowFromXY(10, 20)
> ```

<div id="desktoptable.rowheightat">

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

</div>

<div class="rst-class">

forsearch

</div>

DesktopTable.RowHeightAt

**RowHeightAt**(row As `Integer</api/data_types/integer>`) As `Double</api/data_types/double>`

> Height of a *row* in points (default height as long as no custom one is set).
>
> This example reads the height of a row in points:
>
> ``` xojo
> Var value As Double = Table1.RowHeightAt(0)
> ```

**RowHeightAt**(row As `Integer</api/data_types/integer>`, `Assigns</api/language/assigns>` height As `Double</api/data_types/double>`)

> Sets an individual *row* *height*; values \<= 0 restore the default *height*.
>
> This example sets an individual row height; values \<= 0 restore the default height:
>
> ``` xojo
> Table1.RowHeightAt(0) = 24
> ```

<div id="desktoptable.rowimageat">

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

</div>

<div class="rst-class">

forsearch

</div>

DesktopTable.RowImageAt

**RowImageAt**(index As `Integer</api/data_types/integer>`) As `Picture</api/graphics/picture>`

> Image of a row.
>
> This example reads the image of a row:
>
> ``` xojo
> Var value As Picture = Table1.RowImageAt(0)
> ```

**RowImageAt**(index As `Integer</api/data_types/integer>`, `Assigns</api/language/assigns>` value As `Picture</api/graphics/picture>`)

> Sets the row's image; it is drawn to the left of the text.
>
> This example sets the row's image; it is drawn to the left of the text:
>
> ``` xojo
> Table1.RowImageAt(0) = myPicture
> ```

<div id="desktoptable.rows">

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

</div>

<div class="rst-class">

forsearch

</div>

DesktopTable.Rows

**Rows** As `Iterable</api/language/iterable>`

> Allows For Each row As DesktopTableRow In lb.Rows. The objects handed out are `DesktopTableRow</api/user_interface/desktop/desktoptablerow>` accessors, so the loop reads the live content rather than a copy.
>
> This example allows For Each row As DesktopTableRow In lb.Rows:
>
> ``` xojo
> ' Collect the names of the selected rows
> Var names() As String
>
> For Each r As DesktopTableRow In Table1.Rows
>   If r.Selected Then names.Add(r.CellTextAt(0))
> Next
> ```

<div id="desktoptable.rowselectedat">

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

</div>

<div class="rst-class">

forsearch

</div>

DesktopTable.RowSelectedAt

**RowSelectedAt**(index As `Integer</api/data_types/integer>`) As `Boolean</api/data_types/boolean>`

> Selection state of a row.
>
> This example reads the selection state of a row:
>
> ``` xojo
> Var value As Boolean = Table1.RowSelectedAt(0)
> ```

**RowSelectedAt**(index As `Integer</api/data_types/integer>`, `Assigns</api/language/assigns>` value As `Boolean</api/data_types/boolean>`)

> Sets the row's selection state (multiple rows only with RowSelectionType Multiple).
>
> This example sets the row's selection state:
>
> ``` xojo
> Table1.RowSelectedAt(0) = True
> ```

<div id="desktoptable.rowtagat">

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

</div>

<div class="rst-class">

forsearch

</div>

DesktopTable.RowTagAt

**RowTagAt**(row As `Integer</api/data_types/integer>`) As `Variant</api/data_types/variant>`

> Companion value of a *row*.
>
> This example reads the companion value of a row:
>
> ``` xojo
> Var value As Variant = Table1.RowTagAt(0)
> ```

**RowTagAt**(row As `Integer</api/data_types/integer>`, `Assigns</api/language/assigns>` value As `Variant</api/data_types/variant>`)

> Sets the *row*'s companion *value*.
>
> This example sets the row's companion value:
>
> ``` xojo
> Table1.RowTagAt(0) = "myTag"
> ```

<div id="desktoptable.save">

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

</div>

<div class="rst-class">

forsearch

</div>

DesktopTable.Save

**Save**(file As `FolderItem</api/files/folderitem>`, delimiter As `String</api/data_types/string>` = ",", exportHeaders As `Boolean</api/data_types/boolean>` = `True</api/language/true>`)

> Writes the entire content as a delimited text file in UTF-8. The delimiter decides the format: a comma - the default - writes CSV, `Chr(9)` writes TSV. Cells containing the delimiter, a double quote or a line break are quoted following RFC 4180, so the file reads back unchanged with `Open<desktoptable.open>`. It works in DataSource mode as well, where the rows come from the source.
>
> This example asks for a file and writes the table into it:
>
> ``` xojo
> Var f As FolderItem = FolderItem.ShowSaveFileDialog("text/csv", "Table.csv")
>
> If f <> Nil Then Table1.Save(f)
> ```

<div id="desktoptable.scrollto">

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

</div>

<div class="rst-class">

forsearch

</div>

DesktopTable.ScrollTo

**ScrollTo**(row As `Integer</api/data_types/integer>`, column As `Integer</api/data_types/integer>` = 0)

> Scrolls so the *row* becomes the top-most and the *column* the left-most visible. It scrolls no further than the content allows, so the last rows may stay where they are.
>
> This example scrolls so the row becomes the top-most and the column the left-most visible:
>
> ``` xojo
> Table1.ScrollTo(0)
> ```

<div id="desktoptable.sectionheaderat">

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

</div>

<div class="rst-class">

forsearch

</div>

DesktopTable.SectionHeaderAt

**SectionHeaderAt**(row As `Integer</api/data_types/integer>`) As `Boolean</api/data_types/boolean>`

> Whether the *row* is a section header. While scrolling, the current section's header stays pinned at the top (below the column header) until the next section header scrolls up and pushes it out; the normal rows scroll behind it.
>
> This example reads whether the row is a section header:
>
> ``` xojo
> Var value As Boolean = Table1.SectionHeaderAt(0)
> ```

**SectionHeaderAt**(row As `Integer</api/data_types/integer>`, `Assigns</api/language/assigns>` value As `Boolean</api/data_types/boolean>`)

> Marks (or unmarks) the *row* as a section header (sticky while scrolling).
>
> This example marks (or unmarks) the row as a section header:
>
> ``` xojo
> Table1.SectionHeaderAt(0) = True
> ```

<div id="desktoptable.selectall">

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

</div>

<div class="rst-class">

forsearch

</div>

DesktopTable.SelectAll

**SelectAll**

> Selects every row and fires `SelectionChanged<desktoptable.selectionchanged>`; meaningful with `RowSelectionType = Multiple`. It only has an effect with `RowSelectionType<desktoptable.rowselectiontype>` set to Multiple. The table also handles the Edit menu item `EditSelectAll` itself while it has the focus.
>
> This example allows multiple selection and selects every row:
>
> ``` xojo
> Table1.RowSelectionType = DesktopTable.RowSelectionTypes.Multiple
> Table1.SelectAll
> ```

<div id="desktoptable.setfocus">

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

</div>

<div class="rst-class">

forsearch

</div>

DesktopTable.SetFocus

**SetFocus**

> If applicable, sets the focus to the DesktopUIControl. KeyDown events are directed to the control.
>
> If the control cannot get the focus on the platform on which the application is running, SetFocus does nothing. The SetFocus method of the `DesktopWindow</api/user_interface/desktop/desktopwindow>` class or the `ClearFocus</api/user_interface/desktop/clearfocus>` method can be used to remove the focus from the control that currently has the focus, leaving no control with the focus.
>
> <div class="note">
>
> <div class="title">
>
> Note
>
> </div>
>
> On macOS, you need Full Keyboard Access turned on in System Preferences (Keyboard-\>Shortcuts) in order to manually set focus to non-text controls.
>
> </div>
>
> The following example in the Opening event sets the focus to the that control. If another control has the focus when this line is executed, then the user sees this control gets the focus.
>
> ``` xojo
> Me.SetFocus
> ```

<div id="desktoptable.sort">

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

</div>

<div class="rst-class">

forsearch

</div>

DesktopTable.Sort

**Sort**

> Sorts by `SortingColumn<desktoptable.sortingcolumn>` and its sort direction. The rows are compared as text unless the `RowComparison<desktoptable.rowcomparison>` event decides the order. With a `SortableTableDataSource</api/interfaces/sortabletabledatasource>` the source sorts instead.
>
> This example sorts by SortingColumn and its sort direction:
>
> ``` xojo
> Table1.Sort
> ```

<div id="desktoptable.unmergecellsat">

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

</div>

<div class="rst-class">

forsearch

</div>

DesktopTable.UnmergeCellsAt

**UnmergeCellsAt**(row As `Integer</api/data_types/integer>`, column As `Integer</api/data_types/integer>`)

> Removes the merge covering the cell (anchor or covered). The cells the merge covered are drawn on their own again, with the data they still carry.
>
> This example removes the merge covering the cell:
>
> ``` xojo
> Table1.UnmergeCellsAt(0, 1)
> ```

## Event descriptions

<div id="desktoptable.activated">

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

</div>

<div class="rst-class">

forsearch

</div>

DesktopTable.Activated

**Activated**

> The control is activated. In a single window interface, the Activate event fires when the parent window is activated. See the `DesktopApplication</api/user_interface/desktop/desktopapplication>` and `DesktopWindow</api/user_interface/desktop/desktopwindow>` Activate events.
>
> This can be because the app is launched or a window belonging to another app is no longer frontmost (active). The Deactivate event fires when another window becomes active. In a single window interface, the Activate event fires when the window is activated, e.g., when the app first displays the window.
>
> This example reloads the data when the window comes forward again:
>
> ``` xojo
> ' The window came forward again - show the live data
> Me.ReloadFromDataSource
> ```

<div id="desktoptable.applyleadingactionsforrow">

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

</div>

<div class="rst-class">

forsearch

</div>

DesktopTable.ApplyLeadingActionsForRow

**ApplyLeadingActionsForRow**(row As `Integer</api/data_types/integer>`) As `DesktopTableRowAction()</api/user_interface/desktop/desktoptablerowaction>`

> **macOS, Windows and Linux (touchpad).** Actions for a two-finger swipe from the **leading** edge. Raised once, when the gesture is recognised. An empty array leaves the gesture as an ordinary scroll.
>
> This example offers a single blue action on the leading edge:
>
> ``` xojo
> Var actions() As DesktopTableRowAction
>
> Var unread As New DesktopTableRowAction("Unread", "unread")
> unread.BackgroundColor = New ColorGroup(&c2F6FDB, &c25589F)
> actions.Add(unread)
>
> Return actions
> ```

<div id="desktoptable.applytrailingactionsforrow">

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

</div>

<div class="rst-class">

forsearch

</div>

DesktopTable.ApplyTrailingActionsForRow

**ApplyTrailingActionsForRow**(row As `Integer</api/data_types/integer>`) As `DesktopTableRowAction()</api/user_interface/desktop/desktoptablerowaction>`

> **macOS, Windows and Linux (touchpad).** Actions for a swipe from the **trailing** edge, same contract as above.
>
> This example offers a red delete action, except on rows marked as locked:
>
> ``` xojo
> ' No actions for the rows that may not be deleted
> If Me.RowTagAt(row) = "locked" Then Return Nil
>
> Var actions() As DesktopTableRowAction
>
> Var remove As New DesktopTableRowAction("Delete", "delete")
> remove.BackgroundColor = New ColorGroup(&cD93025, &cC5372C)
> actions.Add(remove)
>
> Return actions
> ```

<div id="desktoptable.cellaction">

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

</div>

<div class="rst-class">

forsearch

</div>

DesktopTable.CellAction

**CellAction**(row As `Integer</api/data_types/integer>`, column As `Integer</api/data_types/integer>`)

> An inline editor was committed. It fires when the user leaves an editable cell, by pressing Return or Tab or by clicking elsewhere, and also when a checkbox cell is clicked. The content need not have changed.
>
> This example writes the edited value back into the record behind the row:
>
> ``` xojo
> ' The user finished editing: write the value back
> mRecords(row).Name = Me.CellTextAt(row, column)
> mRecords(row).Modified = True
> ```

<div id="desktoptable.cellfocuslost">

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

</div>

<div class="rst-class">

forsearch

</div>

DesktopTable.CellFocusLost

**CellFocusLost**(row As `Integer</api/data_types/integer>`, column As `Integer</api/data_types/integer>`)

> The inline editor lost focus. The user moved on to another cell or ended the editing with Return, Tab or Escape.
>
> This example formats the value again once editing ends:
>
> ``` xojo
> ' Editing ended - show the value formatted again
> Me.CellTextAt(row, column) = Val(Me.CellTextAt(row, column)).ToString("#,##0.00")
> ```

<div id="desktoptable.cellfocusreceived">

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

</div>

<div class="rst-class">

forsearch

</div>

DesktopTable.CellFocusReceived

**CellFocusReceived**(row As `Integer</api/data_types/integer>`, column As `Integer</api/data_types/integer>`)

> The inline editor gained focus. The cell is now being edited, so this is the place to preselect text or adjust the editor.
>
> This example preselects the text so typing replaces it:
>
> ``` xojo
> ' Preselect the text so typing replaces it
> If Me.ActiveTextControl <> Nil Then Me.ActiveTextControl.SelectAll
> ```

<div id="desktoptable.cellkeydown">

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

</div>

<div class="rst-class">

forsearch

</div>

DesktopTable.CellKeyDown

**CellKeyDown**(row As `Integer</api/data_types/integer>`, column As `Integer</api/data_types/integer>`, key As `String</api/data_types/string>`) As `Boolean</api/data_types/boolean>`

> The user pressed *key* while the inline editor of a cell (*row*, *column*) has the focus. Return `True</api/language/true>` to swallow the *key*, for example to refuse characters the *column* does not accept.
>
> This example refuses anything but digits in the amount column:
>
> ``` xojo
> ' Only digits in the amount column
> If column = 2 And key.Asc > 31 And InStr("0123456789.", key) = 0 Then Return True
> ```

<div id="desktoptable.cellpressed">

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

</div>

<div class="rst-class">

forsearch

</div>

DesktopTable.CellPressed

**CellPressed**(row As `Integer</api/data_types/integer>`, column As `Integer</api/data_types/integer>`, x As `Integer</api/data_types/integer>`, y As `Integer</api/data_types/integer>`) As `Boolean</api/data_types/boolean>`

> Cell was clicked; **x**, **y** are cell-relative. It fires before the table changes the selection. Return `True</api/language/true>` to keep the click to yourself, which is how a clickable area inside a cell is built.
>
> This example treats a click on the icon column as opening the record:
>
> ``` xojo
> ' A click in the icon column opens the record instead of selecting the row
> If column = 0 And x < 20 Then
>   ShowRecord(row)
>   Return True
> End If
> ```

<div id="desktoptable.celltextchanged">

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

</div>

<div class="rst-class">

forsearch

</div>

DesktopTable.CellTextChanged

**CellTextChanged**(row As `Integer</api/data_types/integer>`, column As `Integer</api/data_types/integer>`)

> The editor's text changed. It fires on every keystroke in the inline editor, not only when the editing ends.
>
> This example enables the Save button as soon as something is typed:
>
> ``` xojo
> ' Enable the Save button as soon as something is typed
> SaveButton.Enabled = True
> ```

<div id="desktoptable.closing">

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

</div>

<div class="rst-class">

forsearch

</div>

DesktopTable.Closing

**Closing**

> The control is going away. The control is being destroyed. An open inline editor has already been committed at this point.
>
> This example stores the column widths for the next launch:
>
> ``` xojo
> ' Keep the column widths for the next launch
> mPreferences.ColumnWidths = Me.ColumnWidths
> ```

<div id="desktoptable.columnheaderpressed">

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

</div>

<div class="rst-class">

forsearch

</div>

DesktopTable.ColumnHeaderPressed

**ColumnHeaderPressed**(column As `Integer</api/data_types/integer>`) As `Boolean</api/data_types/boolean>`

> Header clicked; return `True</api/language/true>` to suppress sorting. It fires before the table sorts. Return `True</api/language/true>` to handle the click yourself and keep the table from sorting.
>
> This example keeps the first column from being sorted:
>
> ``` xojo
> ' The first column is the row number: never sort by it
> If column = 0 Then Return True
> ```

<div id="desktoptable.columnreordered">

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

</div>

<div class="rst-class">

forsearch

</div>

DesktopTable.ColumnReordered

**ColumnReordered**(fromColumn As `Integer</api/data_types/integer>`, toColumn As `Integer</api/data_types/integer>`)

> A column drag finished. The columns are already in their new order, so the indices reported are the new ones.
>
> This example remembers the order the user arranged:
>
> ``` xojo
> ' Remember the new order by the headings
> Var headings() As String
>
> For i As Integer = 0 To Me.LastColumnIndex
>   headings.Add(Me.ColumnHeaderAt(i))
> Next
>
> mPreferences.ColumnOrder = String.FromArray(headings, Chr(9))
> ```

<div id="desktoptable.columnreordering">

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

</div>

<div class="rst-class">

forsearch

</div>

DesktopTable.ColumnReordering

**ColumnReordering**(fromColumn As `Integer</api/data_types/integer>`, toColumn As `Integer</api/data_types/integer>`) As `Boolean</api/data_types/boolean>`

> A column drag is in progress; return `True</api/language/true>` to reject. It fires while the column is being dragged. Return `True</api/language/true>` to refuse that particular move; the column then stays where it is.
>
> This example refuses to move the status column:
>
> ``` xojo
> ' The status column has to stay where it is
> If fromColumn = 0 Or toColumn = 0 Then Return True
> ```

<div id="desktoptable.columnresized">

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

</div>

<div class="rst-class">

forsearch

</div>

DesktopTable.ColumnResized

**ColumnResized**(column As `Integer</api/data_types/integer>`, width As `Integer</api/data_types/integer>`)

> A *column*-*width* drag finished; *width* is the final *width* in whole points. Fires only when the *width* actually changed, so a plain click on the divider stays silent.
>
> This example stores the width the user settled on:
>
> ``` xojo
> ' Store the width the user settled on
> mPreferences.ColumnWidth(column) = width
> ```

<div id="desktoptable.columnresizing">

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

</div>

<div class="rst-class">

forsearch

</div>

DesktopTable.ColumnResizing

**ColumnResizing**(column As `Integer</api/data_types/integer>`, width As `Integer</api/data_types/integer>`)

> Fires on every step of a *column*-*width* drag, reporting the whole-point *width* about to be applied. Purely informational - see the note below.
>
> This example shows the width in a status label while it is dragged:
>
> ``` xojo
> ' Show the width while it is being dragged
> StatusLabel.Text = width.ToString + " pt"
> ```

<div id="desktoptable.columnsorted">

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

</div>

<div class="rst-class">

forsearch

</div>

DesktopTable.ColumnSorted

**ColumnSorted**(column As `Integer</api/data_types/integer>`) As `Boolean</api/data_types/boolean>`

> Fires before sorting; return `True</api/language/true>` to sort yourself. It fires before the rows are rearranged. Return `True</api/language/true>` to sort the data yourself, for example in the database the rows come from.
>
> This example lets the database sort and reloads afterwards:
>
> ``` xojo
> ' Let the database sort, then reload
> mRowSet = mDatabase.SelectSQL("SELECT * FROM People ORDER BY " + FieldName(column))
> Me.ReloadFromDataSource
>
> Return True
> ```

<div id="desktoptable.constructcontextualmenu">

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

</div>

<div class="rst-class">

forsearch

</div>

DesktopTable.ConstructContextualMenu

**ConstructContextualMenu**(base As `DesktopMenuItem</api/user_interface/desktop/desktopmenuitem>`, x As `Integer</api/data_types/integer>`, y As `Integer</api/data_types/integer>`) As `Boolean</api/data_types/boolean>`

> Build the contextual menu. A right-click first selects the row under the pointer, then this event fires so you can add items. Return `True</api/language/true>` to suppress the menu.
>
> This example adds an entry for the row under the pointer:
>
> ``` xojo
> Var row As Integer = Me.RowFromXY(x, y)
> If row < 0 Then Return False
>
> base.AddMenu(New DesktopMenuItem("Delete " + Me.CellTextAt(row, 0), row))
> Return True
> ```

<div id="desktoptable.containerat">

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

</div>

<div class="rst-class">

forsearch

</div>

DesktopTable.ContainerAt

**ContainerAt**(row As `Integer</api/data_types/integer>`, column As `Integer</api/data_types/integer>`) As `DesktopContainer</api/user_interface/desktop/desktopcontainer>`

> Supplies the container for a cell of type Container. It fires when such a cell comes into view, and what it returns is shown in that cell until the cell leaves again. `Nil</api/language/nil>` leaves the cell empty.
>
> Ask `ReusableContainer<desktoptable.reusablecontainer>` first and build a new instance only when it returns `Nil</api/language/nil>`, then fill it with the row's data. The same instance serves other rows later, so everything that belongs to the row is set here.
>
> A column's number is a position, not a name: `AllowColumnReordering<desktoptable.allowcolumnreordering>` lets the user move the column, and the event then arrives with its new number. A handler that compares the number against a fixed one returns `Nil</api/language/nil>` for every cell from that moment on, and the column stays empty. Where the handler has to tell one container column from another, `ColumnTagAt<desktoptable.columntagat>` is the identifier that moves with the column.
>
> This example hands out a container with a popup menu in it:
>
> ``` xojo
> If Me.ColumnTagAt(column) <> "currency" Then Return Nil
>
> Var container As DesktopContainer = Me.ReusableContainer("CurrencyContainer")
>
> If container = Nil Then
>   container = New CurrencyContainer
>   AddHandler CurrencyContainer(container).CurrencySelected, WeakAddressOf CurrencySelected
> End If
>
> Var value As Variant = Me.CellTagAt(row, column)
> CurrencyContainer(container).Init(If(value.IsNull, 0, value.IntegerValue))
>
> Return container
> ```

<div id="desktoptable.containerremovedat">

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

</div>

<div class="rst-class">

forsearch

</div>

DesktopTable.ContainerRemovedAt

**ContainerRemovedAt**(row As `Integer</api/data_types/integer>`, column As `Integer</api/data_types/integer>`, container As `DesktopContainer</api/user_interface/desktop/desktopcontainer>`) As `Boolean</api/data_types/boolean>`

> A cell has given up its container: it scrolled out of view, its row is gone or its type changed. Return `True</api/language/true>` to keep the instance yourself - the table then only lets go of it - and `False</api/language/false>` to have the table dispose of it.
>
> A container fetched through `ReusableContainer<desktoptable.reusablecontainer>` goes into the table's own pool instead, so for those this event fires only once the pool is full - see `ContainerCacheSize<desktoptable.containercachesize>`.
>
> This example leaves the instance to the table:
>
> ``` xojo
> Return False
> ```

<div id="desktoptable.contextualmenuitemselected">

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

</div>

<div class="rst-class">

forsearch

</div>

DesktopTable.ContextualMenuItemSelected

**ContextualMenuItemSelected**(selectedItem As `DesktopMenuItem</api/user_interface/desktop/desktopmenuitem>`) As `Boolean</api/data_types/boolean>`

> A contextual menu item was chosen. It reports the item the user picked from the menu built in `ConstructContextualMenu<desktoptable.constructcontextualmenu>`.
>
> This example removes the row the menu entry was built for:
>
> ``` xojo
> If selectedItem.Tag.IsNull Then Return False
>
> Me.RemoveRowAt(selectedItem.Tag.IntegerValue)
> Return True
> ```

<div id="desktoptable.deactivated">

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

</div>

<div class="rst-class">

forsearch

</div>

DesktopTable.Deactivated

**Deactivated**

> The <span class="title-ref">DesktopTable</span> is deactivated. See the `DesktopApplication</api/user_interface/desktop/desktopapplication>` and `DesktopWindow</api/user_interface/desktop/desktopwindow>` Deactivated events.
>
> In a multiple window interface, the Deactivated event fires when the parent window is deactivated because another window has been brought to the front or a window belonging to another app becomes frontmost. In a single window app, the Deactivated event fires when a window belonging to another app becomes frontmost.
>
> This example stops a refresh timer while the window is in the background:
>
> ``` xojo
> ' Stop anything that only needs to run while the window is in front
> mRefreshTimer.RunMode = Timer.RunModes.Off
> ```

<div id="desktoptable.doublepressed">

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

</div>

<div class="rst-class">

forsearch

</div>

DesktopTable.DoublePressed

**DoublePressed**(row As `Integer</api/data_types/integer>`, column As `Integer</api/data_types/integer>`)

> Double-click on a cell. Use `RowFromXY<desktoptable.rowfromxy>` and `ColumnFromXY<desktoptable.columnfromxy>` to find out which cell was hit, for example to open a detail window.
>
> This example opens the record of the selected row:
>
> ``` xojo
> Var row As Integer = Me.SelectedRowIndex
> If row <> DesktopTable.NoSelection Then ShowRecord(row)
> ```

<div id="desktoptable.dragenter">

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

</div>

<div class="rst-class">

forsearch

</div>

DesktopTable.DragEnter

**DragEnter**(obj As `DragItem</api/user_interface/desktop/dragitem>`, action As `DragItem.Types<dragitem.types>`) As `Boolean</api/data_types/boolean>`

> A drag entered the control. Return `True</api/language/true>` to refuse the drag. The table only receives dragged data after one of the `Accept…Drop` methods was called.
>
> This example accepts folders only:
>
> ``` xojo
> ' Only take folders
> If obj.FolderItem = Nil Or Not obj.FolderItem.IsFolder Then Return True
> ```

<div id="desktoptable.dragexit">

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

</div>

<div class="rst-class">

forsearch

</div>

DesktopTable.DragExit

**DragExit**(obj As `DragItem</api/user_interface/desktop/dragitem>`, action As `DragItem.Types<dragitem.types>`)

> A drag left the control. The pointer left the table again; the drop did not happen here.
>
> This example clears the hint shown during the drag:
>
> ``` xojo
> ' Remove the hint shown while the drag was over the table
> StatusLabel.Text = ""
> ```

<div id="desktoptable.dragover">

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

</div>

<div class="rst-class">

forsearch

</div>

DesktopTable.DragOver

**DragOver**(x As `Integer</api/data_types/integer>`, y As `Integer</api/data_types/integer>`, obj As `DragItem</api/user_interface/desktop/dragitem>`, action As `DragItem.Types<dragitem.types>`) As `Boolean</api/data_types/boolean>`

> A drag is moving over the control. It fires repeatedly while the pointer moves over the table. Return `True</api/language/true>` to refuse the drop at that position.
>
> This example refuses a drop over the header area:
>
> ``` xojo
> ' Refuse the drop over the header area
> If y < Me.HeaderHeight Then Return True
> ```

<div id="desktoptable.dragoverrow">

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

</div>

<div class="rst-class">

forsearch

</div>

DesktopTable.DragOverRow

**DragOverRow**(x As `Integer</api/data_types/integer>`, y As `Integer</api/data_types/integer>`, obj As `DragItem</api/user_interface/desktop/dragitem>`, action As `Integer</api/data_types/integer>`, `ByRef</api/language/byref>` row As `Integer</api/data_types/integer>`, `ByRef</api/language/byref>` parentRow As `Integer</api/data_types/integer>`, `ByRef</api/language/byref>` location As `DesktopTable.DropLocations<desktoptable.droplocations>`) As `Boolean</api/data_types/boolean>`

> *row*-aware drag feedback; adjust the `ByRef</api/language/byref>` values to move the drop target.
>
> This example drops into a folder row and between the other rows:
>
> ``` xojo
> ' Drop into a folder row, between the others
> If Not Me.RowExpandableAt(row) Then location = DesktopTable.DropLocations.AfterRow
> Return False
> ```

<div id="desktoptable.dragreorderrows">

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

</div>

<div class="rst-class">

forsearch

</div>

DesktopTable.DragReorderRows

**DragReorderRows**(newPosition As `Integer</api/data_types/integer>`, parentRow As `Integer</api/data_types/integer>`) As `Boolean</api/data_types/boolean>`

> Rows are being reordered by drag; return `True</api/language/true>` to handle it yourself.
>
> This example moves the record along with its row:
>
> ``` xojo
> ' Move the record along with the row
> mRecords.AddAt(newPosition, mRecords(Me.SelectedRowIndex))
> mRecords.RemoveAt(Me.SelectedRowIndex + If(newPosition < Me.SelectedRowIndex, 1, 0))
> ```

<div id="desktoptable.dragrow">

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

</div>

<div class="rst-class">

forsearch

</div>

DesktopTable.DragRow

**DragRow**(drag As `DragItem</api/user_interface/desktop/dragitem>`, row As `Integer</api/data_types/integer>`) As `Boolean</api/data_types/boolean>`

> The user started dragging *row* out of the table, which only happens while `AllowRowDragging<desktoptable.allowrowdragging>` is on. Put the data into *drag* and return `True</api/language/true>` to allow the *drag*.
>
> This example puts the row's first cell into the drag and allows it:
>
> ``` xojo
> drag.Text = Me.CellTextAt(row, 0)
> Return True
> ```

<div id="desktoptable.dropobject">

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

</div>

<div class="rst-class">

forsearch

</div>

DesktopTable.DropObject

**DropObject**(obj As `DragItem</api/user_interface/desktop/dragitem>`, action As `DragItem.Types<dragitem.types>`)

> Something was dropped on the control. The drop was not aimed at a particular row. `DropObjectOnRow<desktoptable.dropobjectonrow>` reports one that was.
>
> This example adds the dropped text as a new row:
>
> ``` xojo
> If obj.TextAvailable Then Me.AddRow(obj.Text)
> ```

<div id="desktoptable.dropobjectonrow">

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

</div>

<div class="rst-class">

forsearch

</div>

DesktopTable.DropObjectOnRow

**DropObjectOnRow**(x As `Integer</api/data_types/integer>`, y As `Integer</api/data_types/integer>`, obj As `DragItem</api/user_interface/desktop/dragitem>`, action As `Integer</api/data_types/integer>`, row As `Integer</api/data_types/integer>`, parentRow As `Integer</api/data_types/integer>`, location As `DesktopTable.DropLocations<desktoptable.droplocations>`)

> Something was dropped on a specific *row*. The values tell you which *row* was hit and whether the drop happened on it or between rows, so the data can be inserted at the right place.
>
> This example inserts below the row, or replaces its text when dropped on it:
>
> ``` xojo
> If Not obj.TextAvailable Then Return
>
> If location = DesktopTable.DropLocations.AfterRow Then
>   Me.AddRowAt(row + 1, obj.Text)
> Else
>   Me.CellTextAt(row, 0) = obj.Text
> End If
> ```

<div id="desktoptable.focuslost">

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

</div>

<div class="rst-class">

forsearch

</div>

DesktopTable.FocusLost

**FocusLost**

> The control lost keyboard focus. The table no longer receives keystrokes, and the selection is drawn in the inactive colour.
>
> This example disables the actions that work on the selection:
>
> ``` xojo
> ' Grey out the actions that work on the selection
> DeleteButton.Enabled = False
> ```

<div id="desktoptable.focusreceived">

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

</div>

<div class="rst-class">

forsearch

</div>

DesktopTable.FocusReceived

**FocusReceived**

> The control gained keyboard focus. The table now receives keystrokes, and the selection is drawn in the active colour.
>
> This example enables them again to match the selection:
>
> ``` xojo
> DeleteButton.Enabled = Me.SelectedRowCount > 0
> ```

<div id="desktoptable.keydown">

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

</div>

<div class="rst-class">

forsearch

</div>

DesktopTable.KeyDown

**KeyDown**(key As `String</api/data_types/string>`) As `Boolean</api/data_types/boolean>`

> The user pressed *key* while the table has the focus. It fires before the table acts on the *key*: return `True</api/language/true>` to keep the *key* to yourself, otherwise the arrow keys move the selection, Shift extends it in Multiple mode, and Home, End, Page Up and Page Down scroll.
>
> This example removes the selected rows on Delete:
>
> ``` xojo
> ' Delete removes the selected rows
> If key.Asc = 8 Or key.Asc = 127 Then
>
>   For i As Integer = Me.LastRowIndex DownTo 0
>     If Me.RowSelectedAt(i) Then Me.RemoveRowAt(i)
>   Next
>
>   Return True
>
> End If
> ```

<div id="desktoptable.keyup">

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

</div>

<div class="rst-class">

forsearch

</div>

DesktopTable.KeyUp

**KeyUp**(key As `String</api/data_types/string>`)

> The user released *key* while the table had the focus. It fires after the matching *key* press was dealt with and reports the *key* itself, not what the table did with it.
>
> This example applies a filter once Return was released:
>
> ``` xojo
> ' Filter as the user types in a search field above the table
> If key = Chr(13) Then ApplyFilter(SearchField.Text)
> ```

<div id="desktoptable.menubarselected">

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

</div>

<div class="rst-class">

forsearch

</div>

DesktopTable.MenuBarSelected

**MenuBarSelected**

> The menu bar is about to open. It fires just before a menu opens, so menu items can be enabled or disabled to match the current selection.
>
> This example enables the Edit menu items that need a selection:
>
> ``` xojo
> EditCopy.Enabled = Me.SelectedRowCount > 0
> EditClear.Enabled = Me.SelectedRowCount > 0
> ```

<div id="desktoptable.mousedown">

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

</div>

<div class="rst-class">

forsearch

</div>

DesktopTable.MouseDown

**MouseDown**(x As `Integer</api/data_types/integer>`, y As `Integer</api/data_types/integer>`) As `Boolean</api/data_types/boolean>`

> The user pressed the mouse button over the table, at *x*, *y* in the table's own coordinates. It fires before the table changes the selection or starts a drag; returning `True</api/language/true>` takes the click, which is also what makes the following `MouseDrag<desktoptable.mousedrag>` and `MouseUp<desktoptable.mouseup>` reach you.
>
> This example claims the click on the icon column:
>
> ``` xojo
> ' Take the click on the icon column, and with it MouseDrag and MouseUp
> Var column As Integer = Me.ColumnFromXY(x, y)
> If column = 0 Then Return True
> ```

<div id="desktoptable.mousedrag">

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

</div>

<div class="rst-class">

forsearch

</div>

DesktopTable.MouseDrag

**MouseDrag**(x As `Integer</api/data_types/integer>`, y As `Integer</api/data_types/integer>`)

> Mouse moved with the button down. It only fires after `MouseDown<desktoptable.mousedown>` returned `True</api/language/true>`.
>
> This example reports the row the pointer is over while dragging:
>
> ``` xojo
> ' Show what the pointer is over while dragging
> StatusLabel.Text = "Row " + Me.RowFromXY(x, y).ToString
> ```

<div id="desktoptable.mouseenter">

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

</div>

<div class="rst-class">

forsearch

</div>

DesktopTable.MouseEnter

**MouseEnter**

> Pointer entered the control. Use it to change the mouse cursor or to show information about what is under the pointer.
>
> This example changes the mouse cursor over the table:
>
> ``` xojo
> Me.MouseCursor = System.Cursors.FingerPointer
> ```

<div id="desktoptable.mouseexit">

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

</div>

<div class="rst-class">

forsearch

</div>

DesktopTable.MouseExit

**MouseExit**

> Pointer left the control. Anything shown while the pointer was inside, such as a highlight of your own, belongs back to its normal state here.
>
> This example restores the cursor and clears the status label:
>
> ``` xojo
> Me.MouseCursor = Nil
> StatusLabel.Text = ""
> ```

<div id="desktoptable.mousemove">

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

</div>

<div class="rst-class">

forsearch

</div>

DesktopTable.MouseMove

**MouseMove**(x As `Integer</api/data_types/integer>`, y As `Integer</api/data_types/integer>`)

> Pointer moved. It fires while no mouse button is held down.
>
> This example remembers the row under the pointer for a hover highlight:
>
> ``` xojo
> ' Highlight the row under the pointer
> Var row As Integer = Me.RowFromXY(x, y)
>
> If row <> mHotRow Then
>   mHotRow = row
>   Me.Refresh(False)
> End If
> ```

<div id="desktoptable.mouseup">

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

</div>

<div class="rst-class">

forsearch

</div>

DesktopTable.MouseUp

**MouseUp**(x As `Integer</api/data_types/integer>`, y As `Integer</api/data_types/integer>`)

> Mouse button released. It only fires after `MouseDown<desktoptable.mousedown>` returned `True</api/language/true>`.
>
> This example toggles the status of the row that was clicked:
>
> ``` xojo
> Var row As Integer = Me.RowFromXY(x, y)
> If row >= 0 Then ToggleStatus(row)
> ```

<div id="desktoptable.mousewheel">

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

</div>

<div class="rst-class">

forsearch

</div>

DesktopTable.MouseWheel

**MouseWheel**(x As `Integer</api/data_types/integer>`, y As `Integer</api/data_types/integer>`, deltaX As `Integer</api/data_types/integer>`, deltaY As `Integer</api/data_types/integer>`) As `Boolean</api/data_types/boolean>`

> The user turned the mouse wheel or scrolled on a trackpad over the table; *deltaX* and *deltaY* are the steps. It fires before the table scrolls, so returning `True</api/language/true>` lets you scroll by yourself or keep the table where it is.
>
> This example zooms with Command and the wheel instead of scrolling:
>
> ``` xojo
> ' Command + wheel zooms instead of scrolling
> If Keyboard.AsyncCommandKey Then
>   Me.FontSize = Max(9, Me.FontSize + deltaY)
>   Return True
> End If
> ```

<div id="desktoptable.opening">

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

</div>

<div class="rst-class">

forsearch

</div>

DesktopTable.Opening

**Opening**

> The control is being set up. The table is ready to be filled, so rows added here cost a single layout pass no matter how many there are.
>
> This example sets up the columns and fills the table:
>
> ``` xojo
> Me.ColumnCount = 2
> Me.ColumnHeaderAt(0) = "Name"
> Me.ColumnHeaderAt(1) = "City"
> Me.ColumnWidths = "*,120"
>
> For Each r As Record In mRecords
>   Me.AddRow(r.Name, r.City)
> Next
> ```

<div id="desktoptable.paintbackground">

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

</div>

<div class="rst-class">

forsearch

</div>

DesktopTable.PaintBackground

**PaintBackground**(g As `Graphics</api/graphics/graphics>`)

> Fires once per repaint, right after the list background is filled and before rows, grid and header. `g` is the whole, unclipped control surface.
>
> This example paints the area behind the rows:
>
> ``` xojo
> ' A watermark behind the rows
> g.DrawingColor = Color.RGB(245, 245, 245)
> g.FillRectangle(0, 0, g.Width, g.Height)
>
> Return True
> ```

<div id="desktoptable.paintcellbackground">

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

</div>

<div class="rst-class">

forsearch

</div>

DesktopTable.PaintCellBackground

**PaintCellBackground**(g As `Graphics</api/graphics/graphics>`, row As `Integer</api/data_types/integer>`, column As `Integer</api/data_types/integer>`) As `Boolean</api/data_types/boolean>`

> Draw the cell background yourself; return `True</api/language/true>` to suppress the default. It fires once per visible cell per frame, before the selection and the cell content are drawn. Test the cheap condition first and leave the rest to the table.
>
> This example draws every other row in a light grey:
>
> ``` xojo
> ' Stripes: test the cheap condition first, this fires once per visible cell
> If row Mod 2 = 0 Then Return False
>
> g.DrawingColor = Color.RGB(245, 245, 245)
> g.FillRectangle(0, 0, g.Width, g.Height)
>
> Return True
> ```

<div id="desktoptable.paintcelltext">

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

</div>

<div class="rst-class">

forsearch

</div>

DesktopTable.PaintCellText

**PaintCellText**(g As `Graphics</api/graphics/graphics>`, row As `Integer</api/data_types/integer>`, column As `Integer</api/data_types/integer>`, x As `Integer</api/data_types/integer>`, y As `Integer</api/data_types/integer>`) As `Boolean</api/data_types/boolean>`

> Draw the cell text yourself. The `Graphics</api/graphics/graphics>` is clipped to the cell and *x*, *y* mark where the standard text would start. Return `True</api/language/true>` to suppress it.
>
> This example draws negative amounts right-aligned and in red:
>
> ``` xojo
> ' Negative amounts in red, right aligned
> If column <> 2 Then Return False
>
> Var amount As Double = Me.CellTextAt(row, column).Val
>
> If amount < 0 Then g.DrawingColor = Color.RGB(200, 0, 0)
> g.DrawText(amount.ToString("#,##0.00"), g.Width - g.TextWidth(amount.ToString("#,##0.00")) - 4, y)
>
> Return True
> ```

<div id="desktoptable.paintdisclosurewidget">

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

</div>

<div class="rst-class">

forsearch

</div>

DesktopTable.PaintDisclosureWidget

**PaintDisclosureWidget**(g As `Graphics</api/graphics/graphics>`, row As `Integer</api/data_types/integer>`, `ByRef</api/language/byref>` x As `Integer</api/data_types/integer>`, `ByRef</api/language/byref>` y As `Integer</api/data_types/integer>`, `ByRef</api/language/byref>` width As `Integer</api/data_types/integer>`, `ByRef</api/language/byref>` height As `Integer</api/data_types/integer>`) As `Boolean</api/data_types/boolean>`

> Draw or reposition the disclosure widget. Changing the passed values moves and resizes the widget without taking the drawing over; returning `True</api/language/true>` draws it yourself. The rectangle is in the coordinates of the cell, and it is the rectangle the row is expanded and collapsed by: wherever the widget is drawn is where it is clicked.
>
> The width also says how much room stays free before the cell text, so a widget widened where it stands pushes the text along with it. A widget that is **moved** does not: a handler that puts it at the far end of the cell needs nothing kept free at the start, so the text keeps the indent every other row has.
>
> The event fires for every expandable row, including one whose first column is the anchor of a merge. The graphics carries the cell's own font.
>
> This example moves the widget to the right and lets the table draw it:
>
> ``` xojo
> ' Move the widget a little to the right, but let the table draw it
> x = x + 4
> Return False
> ```

<div id="desktoptable.paintheaderbackground">

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

</div>

<div class="rst-class">

forsearch

</div>

DesktopTable.PaintHeaderBackground

**PaintHeaderBackground**(g As `Graphics</api/graphics/graphics>`, column As `Integer</api/data_types/integer>`) As `Boolean</api/data_types/boolean>`

> Draw a header cell's background yourself. It fires once per visible header cell. A hidden *column* raises no paint event at all.
>
> This example highlights the header of the sorting column:
>
> ``` xojo
> If column <> Me.SortingColumn Then Return False
>
> g.DrawingColor = Color.RGB(226, 236, 250)
> g.FillRectangle(0, 0, g.Width, g.Height)
>
> Return True
> ```

<div id="desktoptable.paintheadercontent">

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

</div>

<div class="rst-class">

forsearch

</div>

DesktopTable.PaintHeaderContent

**PaintHeaderContent**(g As `Graphics</api/graphics/graphics>`, column As `Integer</api/data_types/integer>`, x As `Integer</api/data_types/integer>`, y As `Integer</api/data_types/integer>`) As `Boolean</api/data_types/boolean>`

> Draw the header cell's content manually. The **x**, **y** values specify the starting point of the standard text.
>
> This example draws the heading in bold capitals:
>
> ``` xojo
> g.Bold = True
> g.DrawText(Me.ColumnHeaderAt(column).Uppercase, x, y)
>
> Return True
> ```

<div id="desktoptable.paintrowaction">

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

</div>

<div class="rst-class">

forsearch

</div>

DesktopTable.PaintRowAction

**PaintRowAction**(g As `Graphics</api/graphics/graphics>`, row As `Integer</api/data_types/integer>`, action As `DesktopTableRowAction</api/user_interface/desktop/desktoptablerowaction>`, pressed As `Boolean</api/data_types/boolean>`) As `Boolean</api/data_types/boolean>`

> Draw one *row*-*action* button yourself. `g` is clipped to the button, so `(0,0)` is its corner and `g.Width`/`g.Height` its size. `pressed` is `True</api/language/true>` while the mouse is held on it.
>
> This example draws a rounded button instead of the full-height default:
>
> ``` xojo
> ' A rounded button instead of the full-height default
> g.DrawingColor = If(pressed, Color.RGB(150, 30, 25), Color.RGB(217, 48, 37))
> g.FillRoundRectangle(6, 6, g.Width - 12, g.Height - 12, 8, 8)
>
> g.DrawingColor = Color.White
> g.DrawText(action.Title, (g.Width - g.TextWidth(action.Title)) / 2, g.Height / 2 + g.FontAscent / 2)
>
> Return True
> ```

<div id="desktoptable.paintsortwidget">

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

</div>

<div class="rst-class">

forsearch

</div>

DesktopTable.PaintSortWidget

**PaintSortWidget**(g As `Graphics</api/graphics/graphics>`, column As `Integer</api/data_types/integer>`, `ByRef</api/language/byref>` x As `Integer</api/data_types/integer>`, `ByRef</api/language/byref>` y As `Integer</api/data_types/integer>`, `ByRef</api/language/byref>` width As `Integer</api/data_types/integer>`, `ByRef</api/language/byref>` height As `Integer</api/data_types/integer>`) As `Boolean</api/data_types/boolean>`

> Draw or reposition the sort indicator. Independent of `PaintHeaderContent<desktoptable.paintheadercontent>` - the standard indicator still draws even when the header's own text/background was handled.
>
> This example shrinks the sort indicator and lets the table draw it:
>
> ``` xojo
> ' A smaller indicator, drawn by the table
> width = 8
> height = 8
>
> Return False
> ```

<div id="desktoptable.rowactionselected">

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

</div>

<div class="rst-class">

forsearch

</div>

DesktopTable.RowActionSelected

**RowActionSelected**(row As `Integer</api/data_types/integer>`, action As `DesktopTableRowAction</api/user_interface/desktop/desktoptablerowaction>`)

> The user picked a *row* *action*. `action` is the `DesktopTableRowAction` itself, so `Tag` and `Title` are both available. The panel is already closed.
>
> This example carries out the action the user picked:
>
> ``` xojo
> Select Case action.Tag
> Case "delete"
>   Me.RemoveRowAt(row)
> Case "unread"
>   Me.CellBoldAt(row, 0) = True
> End Select
> ```

<div id="desktoptable.rowcollapsed">

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

</div>

<div class="rst-class">

forsearch

</div>

DesktopTable.RowCollapsed

**RowCollapsed**(row As `Integer</api/data_types/integer>`)

> A *row* was collapsed. The children of a *row* are no longer visible. Whether they are also removed from the data is up to you.
>
> This example frees the children that were loaded for the open row:
>
> ``` xojo
> ' Free the children that were only loaded for the open row
> RemoveChildrenOf(row)
> ```

<div id="desktoptable.rowcomparison">

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

</div>

<div class="rst-class">

forsearch

</div>

DesktopTable.RowComparison

**RowComparison**(row1 As `Integer</api/data_types/integer>`, row2 As `Integer</api/data_types/integer>`, column As `Integer</api/data_types/integer>`, `ByRef</api/language/byref>` result As `Integer</api/data_types/integer>`) As `Boolean</api/data_types/boolean>`

> Custom sort comparison; set `result` to `-1`, `0` or `1` and return `True</api/language/true>`. It is called while sorting, for every pair of rows the sort compares. A negative *result* puts *row1* first, a positive one *row2*.
>
> This example sorts the amount column numerically instead of as text:
>
> ``` xojo
> ' Sort the amount column numerically instead of as text
> If column <> 2 Then Return False
>
> Var a As Double = Me.CellTextAt(row1, column).Val
> Var b As Double = Me.CellTextAt(row2, column).Val
>
> result = If(a < b, -1, If(a > b, 1, 0))
>
> Return True
> ```

<div id="desktoptable.rowexpanded">

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

</div>

<div class="rst-class">

forsearch

</div>

DesktopTable.RowExpanded

**RowExpanded**(row As `Integer</api/data_types/integer>`)

> A *row* was expanded - the place to add its children. Children added here appear directly below the *row*. Loading them only now keeps a large tree cheap.
>
> This example loads the children only when the row is opened:
>
> ``` xojo
> ' Load the children only now
> Var depth As Integer = Me.RowDepthAt(row) + 1
>
> For Each child As Record In ChildrenOf(row)
>   Me.AddRowAt(row + 1, depth, child.Name)
> Next
> ```

<div id="desktoptable.scrolled">

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

</div>

<div class="rst-class">

forsearch

</div>

DesktopTable.Scrolled

**Scrolled**(x As `Integer</api/data_types/integer>`, y As `Integer</api/data_types/integer>`)

> The view scrolled. It fires for every scroll step, from the scrollbars, the mouse wheel, the keyboard and from code.
>
> This example keeps a second table in sync:
>
> ``` xojo
> ' Keep a second table in sync
> DetailTable.ScrollPosition = Me.ScrollPosition
> ```

<div id="desktoptable.selectionchanged">

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

</div>

<div class="rst-class">

forsearch

</div>

DesktopTable.SelectionChanged

**SelectionChanged**

> The selection changed. It fires once per change, no matter how many rows it affects.
>
> This example follows the selection with a button and a detail view:
>
> ``` xojo
> DeleteButton.Enabled = Me.SelectedRowCount > 0
>
> If Me.SelectedRowIndex <> DesktopTable.NoSelection Then
>   ShowRecord(Me.SelectedRowIndex)
> End If
> ```

## Notes

**Row actions**

A horizontal two-finger swipe on a row reveals the actions returned by `ApplyLeadingActionsForRow<desktoptable.applyleadingactionsforrow>` and `ApplyTrailingActionsForRow<desktoptable.applytrailingactionsforrow>`. The events are raised once per gesture, so building the array there costs nothing per frame; returning an empty array leaves the gesture an ordinary scroll. A swipe only takes over once the content cannot scroll further that way.

**Menu handlers**

While the table has the focus it handles two standard Edit menu items itself. `EditCopy` copies the selected rows to the clipboard as text - one line per row, the visible columns separated by Tab - and `EditSelectAll` calls `SelectAll<desktoptable.selectall>` when `RowSelectionType<desktoptable.rowselectiontype>` is Multiple. Both require menu items named exactly that, with AutoEnable turned on.

**Custom drawing**

The paint events fire once per visible item per frame and all follow the same contract: the `Graphics</api/graphics/graphics>` is already clipped to the item, so (0, 0) is its own corner, and returning `True</api/language/true>` suppresses the built-in drawing. Test the cheap condition first - a table of 25 visible rows and 5 columns raises `PaintCellBackground<desktoptable.paintcellbackground>` 125 times per frame.

## Interfaces

This class implements the `ListSelectionNotifier</api/language/listselectionnotifier>` class interface.

## Compatibility

|                       |         |
|-----------------------|---------|
| **Project Types**     | Desktop |
| **Operating Systems** | All     |

<div class="seealso">

`DesktopCanvas</api/user_interface/desktop/desktopcanvas>` parent class; `DesktopTableColumn</api/user_interface/desktop/desktoptablecolumn>`, `DesktopTableRow</api/user_interface/desktop/desktoptablerow>`, `DesktopTableRowAction</api/user_interface/desktop/desktoptablerowaction>`, `DesktopTableFrozenColumns</api/user_interface/desktop/desktoptablefrozencolumns>`, `DesktopTableFrozenRows</api/user_interface/desktop/desktoptablefrozenrows>`, `TableDataSource</api/interfaces/tabledatasource>`, `EditableTableDataSource</api/interfaces/editabletabledatasource>`, `HierarchicalTableDataSource</api/interfaces/hierarchicaltabledatasource>`, `SortableTableDataSource</api/interfaces/sortabletabledatasource>`

</div>
