tablelist::tablelist - Create and manipulate tablelist
    widgetstablelist::tablelist pathName ?options?
-borderwidth -highlightthickness -setgrid -cursor -relief -xscrollcommand -exportselection -selectbackground -yscrollcommand -highlightbackground -selectborderwidth -highlightcolor -selectforeground
-background -disabledforeground -font -foreground
-activestyle
    frame|none|underline-arrowcolor
    color-arrowstyle
    flat7x4|flat7x5|flat7x7|flat8x5|flat9x5|sunken8x7|sunken10x9|sunken12x11-arrowdisabledcolor
    color-columns {width title
    ?left|right|center? width title
    ?left|right|center? ...}-columntitles {title
    title ...}-editendcommand
    command-editstartcommand
    command-forceeditendcommand
    boolean-height lines-incrarrowtype
    up|down-labelactivebackground
    color-labelactiveforeground
    color-labelbackground
    color  or  -labelbg
    color-labelborderwidth
    screenDistance  or  -labelbd
    screenDistance-labelcommand
    command-labelcommand2
    command-labeldisabledforeground
    color-labelfont
    font-labelforeground
    color  or  -labelfg
    color-labelheight
    lines-labelpady
    screenDistance-labelrelief
    raised|sunken|flat|ridge|solid|groove-listvariable
    variable-movablecolumns
    boolean-movablerows
    boolean-movecolumncursor
    cursor-movecursor
    cursor-protecttitlecolumns
    boolean-resizablecolumns
    boolean-resizecursor
    cursor-selectmode mode
    (single|browse|multiple|extended)-selecttype
    row|cell-setfocus
    boolean-showarrow
    boolean-showlabels
    boolean-showseparators
    boolean-snipstring
    string-sortcommand
    command-spacing
    screenDistance-state
    normal|disabled-stretch
    all|columnIndexList-stripebackground
    color  or  -stripebg
    color-stripeforeground
    color  or  -stripefg
    color-stripeheight
    lines-takefocus
    0|1|""|command-targetcolor
    color-titlecolumns
    number-tooltipaddcommand
    command-tooltipdelcommand
    command-width characters-align
    left|right|center-background
    color  or  -bg
    color-changesnipside
    boolean-editable
    boolean-editwindow
    name-font font-foreground
    color  or  -fg
    color-formatcommand
    command-hide boolean-labelalign
    left|right|center-labelbackground
    color  or  -labelbg
    color-labelborderwidth
    screenDistance  or  -labelbd
    screenDistance-labelcommand
    command-labelcommand2
    command-labelfont
    font-labelforeground
    color  or  -labelfg
    color-labelheight
    lines-labelimage
    image-labelpady
    screenDistance-labelrelief
    raised|sunken|flat|ridge|solid|groove-maxwidth
    width-name name-resizable
    boolean-selectbackground
    color-selectforeground
    color-showarrow
    boolean-showlinenumbers
    boolean-sortcommand
    command-sortmode
    ascii|command|dictionary|integer|real-stretchable
    boolean-text list-title title-width width-wrap boolean-background
    color  or  -bg
    color-font font-foreground
    color  or  -fg
    color-hide boolean-name name-selectable
    boolean-selectbackground
    color-selectforeground
    color-text list-background
    color  or  -bg
    color-editable
    boolean-editwindow
    name-font font-foreground
    color  or  -fg
    color-image image-selectbackground
    color-selectforeground
    color-stretchwindow
    boolean-text text-window
    command-windowdestroy
    commandnumber knumber active anchor end @x,y name
number active anchor end @x,y name
row,col  active  anchor  end  @x,y
    row: number  knumber  active  anchor  end  name
    col: number  active  anchor  end  name
    pathName activate
    indexpathName activatecell
    cellIndexpathName attrib ?name?
    ?value name value ...?pathName bbox
    indexpathName bodypathpathName bodytagpathName canceleditingpathName cellattrib
    cellIndex ?name? ?value name value
    ...?pathName cellcget
    cellIndex optionpathName cellconfigure
    cellIndex ?option? ?value option value
    ...?pathName cellindex
    cellIndexpathName cellselection
      option args
      pathName cellselection anchor
        cellIndexpathName cellselection clear
        firstCell lastCellpathName cellselection clear
        cellIndexListpathName cellselection includes
        cellIndexpathName cellselection set
        firstCell lastCellpathName cellselection set
        cellIndexListpathName cget
    optionpathName columnattrib
    columnIndex ?name? ?value name value
    ...?pathName columncget
    columnIndex optionpathName columnconfigure columnIndex
    ?option? ?value option value ...?pathName columncountpathName columnindex
    columnIndexpathName columnwidth
    columnIndex
    ?-requested|-stretched|-total?pathName configcelllist {cellIndex option
    value cellIndex option value ...}pathName configcells
    ?cellIndex option value cellIndex option
    value ...?pathName configcolumnlist {columnIndex
    option value columnIndex option value
    ...}pathName configcolumns
    ?columnIndex option value columnIndex
    option value ...?pathName configrowlist
    {index option value index option
    value ...}pathName configrows
    ?index option value index option
    value ...?pathName configure
    ?option? ?value option value ...?pathName containing
    ypathName containingcell x ypathName containingcolumn xpathName curcellselectionpathName curselectionpathName delete first
    lastpathName delete
    indexListpathName deletecolumns
    firstColumn lastColumnpathName deletecolumns
    columnIndexListpathName editcell
    cellIndexpathName editwintagpathName editwinpathpathName entrypathpathName fillcolumn
    columnIndex textpathName finisheditingpathName formatinfopathName get first
    lastpathName get
    indexListpathName getcells
    firstCell lastCellpathName getcells
    cellIndexListpathName getcolumns
    firstColumn lastColumnpathName getcolumns
    columnIndexListpathName getkeys
    first lastpathName getkeys
    indexListpathName hasattrib
    namepathName hascellattrib
    cellIndex namepathName hascolumnattrib columnIndex
    namepathName hasrowattrib
    index namepathName imagelabelpath cellIndexpathName index
    indexpathName insert index
    ?item item ...?pathName insertcolumnlist columnIndex
    {width title ?left|right|center?
    width title ?left|right|center?
    ...}pathName insertcolumns
    columnIndex ?width title
    ?left|right|center? width title
    ?left|right|center? ...?pathName insertlist
    index itemListpathName iselemsnipped
    cellIndex fullTextNamepathName istitlesnipped columnIndex
    fullTextNamepathName itemlistvarpathName labelpath
    columnIndexpathName labelspathName move source
    targetpathName movecolumn
    sourceColumn targetColumnpathName nearest
    ypathName nearestcell
    x ypathName nearestcolumn
    xpathName rejectinputpathName resetsortinfopathName rowattrib
    index ?name? ?value name value
    ...?pathName rowcget
    index optionpathName rowconfigure
    index ?option? ?value option value
    ...?pathName scan
    mark|dragto x ypathName see
    indexpathName seecell
    cellIndexpathName seecolumn
    columnIndexpathName selection
      option args
      pathName selection anchor
        indexpathName selection clear first
        lastpathName selection clear
        indexListpathName selection includes
        indexpathName selection set first
        lastpathName selection set
        indexListpathName separatorpath
    ?columnIndex?pathName separatorspathName sizepathName sort
    ?-increasing|-decreasing?pathName sortbycolumn
    columnIndex ?-increasing|-decreasing?pathName sortbycolumnlist columnIndexList
    ?sortOrderList?pathName sortcolumnpathName sortcolumnlistpathName sortorderpathName sortorderlistpathName togglecolumnhide firstColumn
    lastColumnpathName togglecolumnhide
    columnIndexListpathName togglerowhide
    first lastpathName togglerowhide
    indexListpathName unsetattrib
    namepathName unsetcellattrib cellIndex
    namepathName unsetcolumnattrib columnIndex
    namepathName unsetrowattrib index
    namepathName windowpath
    cellIndexpathName xview
      args
      pathName xviewpathName xview unitspathName xview moveto
        fractionpathName xview scroll number
        units|pagespathName yview
      args
      pathName yviewpathName yview unitspathName yview moveto
        fractionpathName yview scroll number
        units|pagestablelist::tablelist - Create and manipulate tablelist
    widgetstablelist::tablelist pathName ?options?
-borderwidth -highlightthickness -setgrid -cursor -relief -xscrollcommand -exportselection -selectbackground -yscrollcommand -highlightbackground -selectborderwidth -highlightcolor -selectforeground
-highlightbackground,
    -highlightcolor, and
    -highlightthickness options are only supported by the
    Tablelist package, but not by Tablelist_tile.  When using the package
    Tablelist_tile, the options -selectbackground,
    -selectborderwidth, and
    -selectforeground have theme-specific default
    values.-background -disabledforeground -font -foreground
| Command-Line Name: | -activestyle | 
| Database Name: |  activeStyle | 
| Database Class: |  ActiveStyle | 
Specifies how to diplay the active item or element (depending on the value of the
-selecttypeconfiguration option) when the tablelist has the keyboard focus. The allowed values areframe,none, andunderline. The default valueframeshows a thin frame around the active item or element, which in most cases looks nice. It looks less pretty when applied to the active item if the background color of some of its cells was changed by using thecolumnconfigureorcellconfigurewidget command and no column separators are shown. The valuenonespecifies that no special indication of the active item or element is to be performed. The valueunderlineproduces the same visual effect as in the case of the Tk core listbox.
| Command-Line Name: | -arrowcolor | 
| Database Name: |  arrowColor | 
| Database Class: |  ArrowColor | 
Specifies the color to use for the up- or down-arrow placed into a column label by the
sortbycolumnorsortbycolumnlistsubcommand of the Tcl command associated with the widget. This option is only relevant if the value of the-showarrowoption is true. The default value depends on the windowing system in the Tablelist package and on the current theme in Tablelist_tile. For example, if the windowing system isx11then the default is an empty string, indicating that the arrow will inherit the background color of the label in which it is placed (but is distinguishable from the latter, due to its 3-D border and sunken relief, because in this case the-arrowstyleoption has the default valuesunken10x9). On the windowing systemwin32, the default arrow color is#aca899for Windows XP and Vista, and an empty string for older Windows versions, paired with the default arrow styleflat9x5andsunken8x7, respectively. Finally, for the windowing systemsclassicandaquaon the Macintosh, the default arrow color is#777777and the default arrow style isflat7x7.
| Command-Line Name: | -arrowstyle | 
| Database Name: |  arrowStyle | 
| Database Class: |  ArrowStyle | 
Specifies the relief, width, and height of the up- or down-arrow placed into a column label by the
sortbycolumnorsortbycolumnlistsubcommand of the Tcl command associated with the widget. This option is only relevant if the value of the-showarrowoption is true. The currently supported values areflat7x4,flat7x5,flat7x7,flat8x5,flat9x5,sunken8x7,sunken10x9, andsunken12x11. The default value depends on the windowing system in the Tablelist package and on the current theme in Tablelist_tile; see the description of the-arrowcoloroption for details.
| Command-Line Name: | -arrowdisabledcolor | 
| Database Name: |  arrowDisabledColor | 
| Database Class: |  ArrowDisabledColor | 
Specifies the color to use for the up- or down-arrow placed into a column label by the
sortbycolumnorsortbycolumnlistsubcommand of the Tcl command associated with the widget when the tablelist'sstateisdisabled. This option is only relevant if the value of the-showarrowoption is true. When the default value of the-arrowcoloroption is an empty string then this is the default for the-arrowdisabledcoloroption, too; otherwise the latter's default value equals the default foreground color of the header labels indisabledstate.
| Command-Line Name: | -columns | 
| Database Name: |  columns | 
| Database Class: |  Columns | 
Specifies the widths, titles, and alignments of the columns. The option's value must be a list of the form
width title ?alignment? width title ?alignment? ...Each
widthmust be a number. A positive value specifies the column's width in average-size characters of the widget's font. Ifwidthis negative, its absolute value is interpreted as a column width in pixels. Finally, a value of zero specifies that the column's width is to be made just large enough to hold all the elements in the column, including its header (but no larger than the maximum width indicated by the-maxwidthcolumn configuration option). In all three cases, the effective column width will be somewhat greater because of the margins created automatically to the left and right of the column.Each
titlespecifies the text to be displayed in the column's header, and may optionally be followed in the next list element by analignment, which specifies how to align the elements of the column. Eachalignmentmust be one ofleft,right, orcenter. The default isleft. Thealignmentalso refers to the column's title as long as the-labelalignoption hasn't been specified for that column, or if its value is an empty string.The default value of this option is an empty list, specifying that initially the widget has no columns.
REMARK: Whenever possible, you should specify the value zero for the column widths, i.e., use dynamic-width columns. Besides being more user-friendly, dynamic-width columns have the main advantage that they increase the performance of the item insertion and sorting quite significantly.
| Command-Line Name: | -columntitles | 
| Database Name: |  columnTitles | 
| Database Class: |  ColumnTitles | 
This option provides a simplified form of specifying dynamic-width, left-aligned tablelist columns. Its value is viewed as a list of column titles. The default is an empty list.
In the simplest case that no columns have been specified yet, setting this option to the value given by the list
title title ...is equivalent to setting the
-columnsoption to the value given by the list
0 title left 0 title left ...If the columns have already been specified then this option updates their titles (as many of them as possible) and, if the number of elements of its value is greater than the number of columns then it uses the remaining elements as titles of additional dynamic-width, left-aligned columns. For example, if the widget has 3 columns and the option's value is a list of length 5 then the option will update the titles of the 3 columns and will append 2 new dynamic-width, left-aligned columns having as titles the last 2 elements of the list. If the widget has 3 columns and the option specifies just 2 texts then it will update the titles of the first 2 columns only.
| Command-Line Name: | -editendcommand | 
| Database Name: |  editEndCommand | 
| Database Class: |  EditEndCommand | 
Specifies a Tcl command to be invoked on normal termination of the interactive editing of a cell's contents if the final text of the temporary embedded widget used for the editing is different from its initial one. The command is automatically concatenated with the name of the tablelist widget, the cell's row and column indices, as well as the final contents of the edit window, the resulting script is evaluated in the global scope, and the return value becomes the cell's new contents after destroying the temporary embedded widget. The main purpose of this script is to perform a final validation of the edit window's contents. See the description of the
-forceeditendcommandoption for more about the invocation of the command mentioned above, as well as the INTERACTIVE CELL EDITING section for details on the editing process.
| Command-Line Name: | -editstartcommand | 
| Database Name: |  editStartCommand | 
| Database Class: |  EditStartCommand | 
Specifies a Tcl command to be invoked when the interactive editing of a cell's contents is started. The command is automatically concatenated with the name of the tablelist widget, the cell's row and column indices, as well as the text displayed in the cell, the resulting script is evaluated in the global scope, and the return value becomes the initial contents of the temporary embedded widget used for the editing. The main purpose of this script is to define validations for the edit window's contents. See the INTERACTIVE CELL EDITING section for details on the editing process.
| Command-Line Name: | -forceeditendcommand | 
| Database Name: |  forceEditEndCommand | 
| Database Class: |  ForceEditEndCommand | 
Specifies a boolean value that controls the invocation of the command given by the the
-editendcommandoption. If this value is true then the command will be invoked on normal termination of the editing process even if the final text of the temporary embedded widget used for the editing equals its initial one, and will also be invoked when the interactive cell editing is canceled (in the latter case, the text passed to it as last argument will be the cell's original contents, not its final one). The default value of this option is0, meaning that the command will only be invoked on normal termination of the editing process, if the final text of the temporary embedded widget is different from its initial one. See the INTERACTIVE CELL EDITING section for details on the editing process.Setting this option to true enables you to execute an arbitrary action whenever the interactive cell editing is finished. Just binding a script to the
<Destroy>event for the temporary embedded widget used for the editing won't work, because that widget might be destroyed and recreated automatically under various circumstances. Alternately, you can use the<<TablelistCellUpdated>>and<<TablelistCellRestored>>virtual events, generated by thefinisheditingandcanceleditingsubcommands, respectively.
| Command-Line Name: | -height | 
| Database Name: |  height | 
| Database Class: |  Height | 
Specifies the desired height for the window, in lines. If zero or less then the desired height for the window is made just large enough to hold the header and all the items in the tablelist widget, provided that no column-, row-, or cell-specific fonts are used and no embedded images or windows are displayed in the widget's cells.
| Command-Line Name: | -incrarrowtype | 
| Database Name: |  incrArrowType | 
| Database Class: |  IncrArrowType | 
Specifies the type of the arrow placed into a column label when sorting the items based on that column in increasing order, with the aid of the
sortbycolumnorsortbycolumnlistsubcommand of the Tcl command associated with the widget. The value of this option must be one ofupordown. The default isup. This option is only relevant if the value of the-showarrowoption is true.
| Command-Line Name: | -labelactivebackground | 
| Database Name: |  labelActiveBackground | 
| Database Class: |  Foreground | 
Specifies the
-activebackgroundoption for the header labels, i.e., the background color to use when the mouse cursor is positioned over a header label and the value oftk_strictMotifis false. This option is only defined in the Tablelist package if the Tk version being used supports the-activebackgroundoption for label widgets. This is checked by Tablelist at initialization time, and will normally be the case for Tk versions 8.3.2 or higher. On the other hand, the Tablelist_tile package doesn't support the-labelactivebackgroundoption.
| Command-Line Name: | -labelactiveforeground | 
| Database Name: |  labelActiveForeground | 
| Database Class: |  Background | 
Specifies the
-activeforegroundoption for the header labels, i.e., the foreground color to use when the mouse cursor is positioned over a header label and the value oftk_strictMotifis false. This option is only defined in the Tablelist package if the Tk version being used supports the-activeforegroundoption for label widgets. This is checked by Tablelist at initialization time, and will normally be the case for Tk versions 8.3.2 or higher. On the other hand, the Tablelist_tile package doesn't support the-labelactiveforegroundoption.
| Command-Line Name: | -labelbackgroundor-labelbg | 
| Database Name: |  labelBackground | 
| Database Class: |  Background | 
Specifies the
-backgroundoption for the header labels. In the package Tablelist_tile this option has a theme-specific default value.
| Command-Line Name: | -labelborderwidthor-labelbd | 
| Database Name: |  labelBorderWidth | 
| Database Class: |  BorderWidth | 
Specifies the
-borderwidthoption for the header labels. This option is different from the standard-borderwidthoption defined for the tablelist widget itself. In the package Tablelist_tile this option has a theme-specific default value.
| Command-Line Name: | -labelcommand | 
| Database Name: |  labelCommand | 
| Database Class: |  LabelCommand | 
Specifies the Tcl command to be invoked when mouse button 1 is pressed over one of the header labels and later released over the same label. When the
<ButtonRelease-1>event occurs, the command is automatically concatenated with the name of the tablelist widget and the column index of the respective label, and the resulting script is evaluated in the global scope. If the tablelist'sstateisdisabledthen this action will not take place. The most common value of this option istablelist::sortByColumn; this command sorts the items based on the column whose index was passed to it as second argument.
| Command-Line Name: | -labelcommand2 | 
| Database Name: |  labelCommand2 | 
| Database Class: |  LabelCommand2 | 
Specifies the Tcl command to be invoked when mouse button 1 is pressed together with the
Shiftkey over one of the header labels and later released over the same label. When the<ButtonRelease-1>event occurs, the command is automatically concatenated with the name of the tablelist widget and the column index of the respective label, and the resulting script is evaluated in the global scope. If the tablelist'sstateisdisabledthen this action will not take place. The most common value of this option istablelist::addToSortColumns; this command adds the column index passed to it as second argument to the list of sort columns and sorts the items based on the columns indicated by the modified list.
| Command-Line Name: | -labeldisabledforeground | 
| Database Name: |  labelDisabledForeground | 
| Database Class: |  DisabledForeground | 
Specifies the
-disabledforegroundoption for the header labels, i.e., the foreground color to use for the labels when the tablelist'sstateisdisabled. This option is only defined in the Tablelist package if the Tk version being used supports the-disabledforegroundoption for label widgets. This is checked by Tablelist at initialization time, and will normally be the case for Tk versions 8.3.1 or higher. On the other hand, the Tablelist_tile package doesn't support the-labeldisabledforegroundoption.
| Command-Line Name: | -labelfont | 
| Database Name: |  labelFont | 
| Database Class: |  Font | 
Specifies the
-fontoption for the header labels. In the package Tablelist_tile this option has a theme-specific default value.
| Command-Line Name: | -labelforegroundor-labelfg | 
| Database Name: |  labelForeground | 
| Database Class: |  Foreground | 
Specifies the
-foregroundoption for the header labels. In the package Tablelist_tile this option has a theme-specific default value.
| Command-Line Name: | -labelheight | 
| Database Name: |  labelHeight | 
| Database Class: |  Height | 
Specifies the
-heightoption for the header labels. This option is only supported by the Tablelist package, but not by Tablelist_tile.
| Command-Line Name: | -labelpady | 
| Database Name: |  labelPadY | 
| Database Class: |  Pad | 
In the Tablelist package this option specifies the
-padyconfiguration option for the header labels. In the Tablelist_tile package the value of the-labelpadyoption is mapped to the corresponding components of the value of the-paddingconfiguration option of the header labels, and the-labelpadyoption has a theme-specific default value.
| Command-Line Name: | -labelrelief | 
| Database Name: |  labelRelief | 
| Database Class: |  Relief | 
Specifies the
-reliefoption for the header labels. This option is different from the standard-reliefoption defined for the tablelist widget itself. The default value israised.
| Command-Line Name: | -listvariable | 
| Database Name: |  listVariable | 
| Database Class: |  Variable | 
Specifies the name of a variable. The value of the variable is a list to be displayed inside the widget; if the variable value changes then the widget will automatically update itself to reflect the new value. The value of the variable must be a valid list. Each list element corresponds to a row within the widget, and must be a valid list itself; its elements correspond to the cells within the respective row. Attempts to assign a variable whose value does not fulfil these conditions to
-listvariablewill cause an error. Attempts to unset a variable in use as a-listvariablewill fail but will not generate an error.REMARK: For increased efficiency, updating the widget to reflect a changed value of the variable specified with this option is, whenever possible, done at idle time (i.e., when there are no events to process). On the other hand, most tablelist subcommands make it necessary to perform an immediate update of the widget's internal list according to the value of this variable, before executing the subcommand in question. Doing this repeatedly can become quite inefficient. To avoid performance problems, you should always try to separate the operations that build up the value of the variable specified by this option from other commands. For example, instead of
tablelist::tablelist .tbl ... -listvariable var set var {} for {set row 0} {$row < 1000} {incr row} { lappend var ... .tbl cellconfigure $row,3 -image ... }you should write
tablelist::tablelist .tbl ... -listvariable var set var {} for {set row 0} {$row < 1000} {incr row} { lappend var ... } for {set row 0} {$row < 1000} {incr row} { .tbl cellconfigure $row,3 -image ... }The first method above is quite inefficient, because it requires 1000 updates of the widget's internal list. The second method performs incomparably faster, because it needs only one synchronization (at the beginning of the second loop).
| Command-Line Name: | -movablecolumns | 
| Database Name: |  movableColumns | 
| Database Class: |  MovableColumns | 
Specifies a boolean value that determines whether the columns can be moved interactively. See the DEFAULT BINDINGS FOR THE HEADER LABELS section below for information on moving a column interactively. The default value is
0.
| Command-Line Name: | -movablerows | 
| Database Name: |  movableRows | 
| Database Class: |  MovableRows | 
Specifies a boolean value that determines whether the rows can be moved interactively. See the DEFAULT AND INDIVIDUAL BINDINGS FOR THE TABLELIST BODY section below for information on moving a row interactively. The default value is
0.
| Command-Line Name: | -movecolumncursor | 
| Database Name: |  moveColumnCursor | 
| Database Class: |  MoveColumnCursor | 
Specifies the mouse cursor to be used when moving a column interactively. The default value is
icon.
| Command-Line Name: | -movecursor | 
| Database Name: |  moveCursor | 
| Database Class: |  MoveCursor | 
Specifies the mouse cursor to be used when moving a row interactively. The default value is
hand2.
| Command-Line Name: | -protecttitlecolumns | 
| Database Name: |  protectTitleColumns | 
| Database Class: |  ProtectTitleColumns | 
Specifies a boolean value that determines whether the boundary of the title column area shall be protected from being crossed when moving a column interactively. See the DEFAULT BINDINGS FOR THE HEADER LABELS section below for information on moving a column interactively. The default value is
0, specifying that non-title columns can be moved into the title column area and vice-versa.
| Command-Line Name: | -resizablecolumns | 
| Database Name: |  resizableColumns | 
| Database Class: |  ResizableColumns | 
Specifies a boolean value that determines whether the columns can be resized interactively. See the DEFAULT BINDINGS FOR THE HEADER LABELS section below for information on interactive column resizing. The default value is
1.
| Command-Line Name: | -resizecursor | 
| Database Name: |  resizeCursor | 
| Database Class: |  ResizeCursor | 
Specifies the mouse cursor to be used during interactive column resizing. The default value is
sb_h_double_arrow.
| Command-Line Name: | -selectmode | 
| Database Name: |  selectMode | 
| Database Class: |  SelectMode | 
Specifies one of several styles for manipulating the selection. The value of the option may be arbitrary, but the default bindings expect it to be either
single,browse,multiple, orextended. The default value isbrowse.
| Command-Line Name: | -selecttype | 
| Database Name: |  selectType | 
| Database Class: |  SelectType | 
Specifies one of two selection types for the tablelist widget:
roworcell. If the selection type isrowthen the default bindings will select and deselect entire items, and the whole row having the location cursor will be displayed as active when the tablelist has the keyboard focus. If the selection type iscellthen the default bindings will select and deselect individual elements, and the single cell having the location cursor will be displayed as active when the tablelist has the keyboard focus. The default value isrow.
| Command-Line Name: | -setfocus | 
| Database Name: |  setFocus | 
| Database Class: |  SetFocus | 
Specifies a boolean value that determines whether a click with the left mouse button anywhere into the tablelist's body, including the separators and the embedded images (more precisely, any descendants of the tablelist widget having the binding tag
TablelistBody) should set the focus to the body of the tablelist widget if the latter'sstateisnormal. The default value is1.
| Command-Line Name: | -showarrow | 
| Database Name: |  showArrow | 
| Database Class: |  ShowArrow | 
Specifies a boolean value that determines whether the
sortbycolumnandsortbycolumnlistsubcommands of the Tcl command associated with the widget should place an arrow indicating the sort order into the header label(s) of the column(s) specified by their first argument. The default value is1.
| Command-Line Name: | -showlabels | 
| Database Name: |  showLabels | 
| Database Class: |  ShowLabels | 
Specifies a boolean value that determines whether the header labels are to be shown or not. The default value is
1.
| Command-Line Name: | -showseparators | 
| Database Name: |  showSeparators | 
| Database Class: |  ShowSeparators | 
Specifies a boolean value that determines whether the columns are to be separated with borders. The default value is
0. The separators are implemented as thin frames with sunken relief in the package Tablelist, and as tile separator widgets in the package Tablelist_tile. They are attached to the right edges of the header labels, and are only created if the value of this option is true. There is no support for horizontal separators in tablelist widgets, but a nice distinguishing effect for the rows can be achieved with the aid of the-stripebackgroundoption discussed below.
| Command-Line Name: | -snipstring | 
| Database Name: |  snipString | 
| Database Class: |  SnipString | 
Specifies the string to be used as snip indicator when displaying the elements that don't fit into their cells. The default is an ellipsis (
"...").
| Command-Line Name: | -sortcommand | 
| Database Name: |  sortCommand | 
| Database Class: |  SortCommand | 
Specifies a command to be used for the comparison of the items when invoking the
sortsubcommand of the Tcl command associated with the tablelist widget. To compare two items (viewed as lists of cell contents within one row each) during thesortoperation, the command is automatically concatenated with the two items and the resulting script is evaluated. The script should return an integer less than, equal to, or greater than zero if the first item is to be considered less than, equal to, or greater than the second, respectively.
| Command-Line Name: | -spacing | 
| Database Name: |  spacing | 
| Database Class: |  Spacing | 
Specifies additional space to provide above and below each row of the widget. The option's value may have any of the standard forms for screen distances. It defaults to
0.
| Command-Line Name: | -state | 
| Database Name: |  state | 
| Database Class: |  State | 
Specifies one of two states for the tablelist widget:
normalordisabled. If the widget is disabled then neither items nor columns may be inserted, deleted, updated, or moved, the items, header labels, and the up- or down-arrow are drawn in the-disabledforeground,-labeldisabledforeground, and-arrowdisabledcolorcolor, respectively, the selection cannot be modified and is not shown (although the selection information is retained), the header labels are completely insensitive, and no interactive cell editing can be performed. In addition, in disabled state any color options specified at column, row, or cell level will be ignored.
| Command-Line Name: | -stretch | 
| Database Name: |  stretch | 
| Database Class: |  Stretch | 
Specifies the columns to be stretched in order to fill the tablelist window if necessary. The option's value may be
allor a list of column indices in any of the forms described in the COLUMN INDICES section below. In the second case, the specified column indices are replaced with their numerical equivalents, except for the indexend, which is viewed as a dynamic column index whose numerical equivalent might change during program execution and therefore will be recomputed every time the columns are stretched. The list will be updated automatically whenever columns are inserted, deleted, or moved. The number of pixels by which a column is stretched is proportional to its width in pixels. The default value of this option is an empty list, meaning that no column will be stretched to eliminate the blank space that might appear at the right of the table. (Note that the blank space following the header labels is filled with a dummy, insensitive label having the same background, borderwidth, and relief as the "normal" header labels.) This option is ignored if the value of the-widthconfiguration option is zero or less.
| Command-Line Name: | -stripebackgroundor-stripebg | 
| Database Name: |  stripeBackground | 
| Database Class: |  Background | 
Specifies the background color to use when displaying the items belonging to a stripe. Each stripe is composed of the same number
stripeHeightof consecutive non-hidden items, according to the value of the-stripeheightconfiguration option. The firststripeHeightnon-hidden items are "normal" ones; they are followed by a stripe composed of the nextstripeHeightnon-hidden items, which in turn is followed by the same number of "normal" non-hidden items, and so on. In the Tablelist package and in most themes supported by Tablelist_tile, the default value is an empty string, indicating that the stripes will inherit the background color specified by the-backgroundconfiguration option. When using Tablelist_tile with thetileqttheme then the default value is given by the global KDE optionalternateBackground, which in turn depends on the current color scheme. In this case it is recommended to either keep that default value retrieved from KDE, or to use an explicitly specified empty string if no stripes are to be displayed. The-stripebackgroundoption has a higher priority than the-backgroundcolumn configuration option, but a lower priority than the-backgroundoption specified at row or cell level.
| Command-Line Name: | -stripeforegroundor-stripefg | 
| Database Name: |  stripeForeground | 
| Database Class: |  Foreground | 
Specifies the foreground color to use when displaying the items belonging to a stripe. Each stripe is composed of the same number
stripeHeightof consecutive non-hidden items, according to the value of the-stripeheightconfiguration option. The firststripeHeightnon-hidden items are "normal" ones; they are followed by a stripe composed of the nextstripeHeightnon-hidden items, which in turn is followed by the same number of "normal" non-hidden items, and so on. The default value is an empty string, indicating that the stripes will inherit the foreground color specified by the-foregroundconfiguration option. The-stripeforegroundoption has a higher priority than the-foregroundcolumn configuration option, but a lower priority than the-foregroundoption specified at row or cell level.
| Command-Line Name: | -stripeheight | 
| Database Name: |  stripeHeight | 
| Database Class: |  StripeHeight | 
Specifies the number of items in each stripe. If zero or less then no stripes are displayed. The default is
1.
| Command-Line Name: | -takefocus | 
| Database Name: |  takeFocus | 
| Database Class: |  TakeFocus | 
This option determines whether the widget accepts the focus during keyboard traversal. It is almost identical to the standard option of the same name (see the options manual entry for details). The only difference is that not the widget itself but its body child (containing the items) will receive the focus during keyboard traversal with the standard keys (
TabandShift-Tab).
| Command-Line Name: | -targetcolor | 
| Database Name: |  targetColor | 
| Database Class: |  TargetColor | 
Specifies the color of the temporary gap displayed in the tablelist's body or header to indicate the target position when moving a row or column interactively. The default value is
black.
| Command-Line Name: | -titlecolumns | 
| Database Name: |  titleColumns | 
| Database Class: |  TitleColumns | 
Specifies the number of the non-scrollable columns at the left edge of the window, also called title columns. The positions of these columns will not change when adjusting the horizontal view by invoking the
scan,seecell,seecolumn, orxviewsubcommand. The default value is0. The value of this option also determines the scrolling unit used by the commands mentioned above when shifting the horizontal view: if it is positive then the horizontal scrolling is performed column-wise, otherwise by character units (the width of the0character).The end of the title column area is visualized with the aid of a separator, attached to the right edge of the header label corresponding to the last non-hidden title column. This special separator is always displayed to mark the end of the title columns (if any), independently of the value of the
-showseparatorsoption. The user can easily distinguish it from the other separators by means of its background color, which is different from that of the other separator frames.For technical reasons (the use of the
-elideoption for a text widget tag), this option is not supported for Tk versions earlier than 8.3.
| Command-Line Name: | -tooltipaddcommand | 
| Database Name: |  tooltipAddCommand | 
| Database Class: |  TooltipAddCommand | 
Specifies a Tcl command to be used for displaying cell- and column label-specific balloon help. When the mouse pointer enters a cell, the command is automatically concatenated with the name of the tablelist widget and the cell's row and column indices, and the resulting script is evaluated in the global scope. Similarly, when the mouse pointer enters a header label, the command is automatically concatenated with the name of the tablelist widget, the number
-1, and the column index of the respective label, and the resulting script is evaluated in the global scope. In both cases, the action described above is only triggered if both the value of this option and that of-tooltipdelcommandare nonempty strings.For example, consider the procedure
tooltipAddCmdshown below, which makes use of theDynamicHelp::addcommand from the BWidget package to display the full cell and label texts as tooltips for the cells and header labels with snipped contents.proc tooltipAddCmd {tbl row col} { if {($row >= 0 && [$tbl iselemsnipped $row,$col fullText]) || ($row < 0 && [$tbl istitlesnipped $col fullText])} { DynamicHelp::add $tbl -text $fullText } }A tablelist widget can use this procedure by specifying
... -tooltipaddcommand tooltipAddCmd -tooltipdelcommand DynamicHelp::deleteIf you prefer to use the
tooltip::tooltipcommand from the tooltip package contained in tklib then the procedure becomesproc tooltipAddCmd {tbl row col} { if {($row >= 0 && [$tbl iselemsnipped $row,$col fullText]) || ($row < 0 && [$tbl istitlesnipped $col fullText])} { tooltip::tooltip $tbl $fullText } }and can be used by specifying
... -tooltipaddcommand tooltipAddCmd -tooltipdelcommand "tooltip::tooltip clear"Please note that in the less common case that the name of your tablelist widget contains spaces, the
tooltip::tooltip clearcommand won't work as expected. As a workaround you can use the slightly modified approach shown below:proc tooltipDelCmd tbl { tooltip::tooltip $tbl "" } ... -tooltipaddcommand tooltipAddCmd -tooltipdelcommand tooltipDelCmdBoth examples above make use of the
iselemsnippedandistitlesnippedsubcommands, to make sure that the full cell and label texts will only be displayed for those cells and header labels whose contents are snipped.
| Command-Line Name: | -tooltipdelcommand | 
| Database Name: |  tooltipDelCommand | 
| Database Class: |  TooltipDelCommand | 
Specifies a Tcl command to be used for removing the cell- or column label-specific balloon help. When the mouse pointer leaves a cell or a header label, the command specified by this option is automatically concatenated with the name of the tablelist widget and the resulting script is evaluated in the global scope. This action is only triggered if both the value of this option and that of
-tooltipaddcommandare nonempty strings. Common values for this option are"DynamicHelp::delete"(which requires the BWidget package) and"tooltip::tooltip clear"(which requires the tooltip package contained in tklib). Their usage is shown in the examples above.
| Command-Line Name: | -width | 
| Database Name: |  width | 
| Database Class: |  Width | 
Specifies the desired width for the window, in average-size characters of the widget's font. If zero or less then the desired width for the window is made just large enough to hold all the columns in the tablelist widget.
tablelist::tablelist command creates a new
    window named pathName and of the class
    Tablelist, and makes it into a tablelist
    widget.  Additional options, described above, may be specified on the
    command line or in the option database to configure aspects of the
    tablelist such as its colors, font, and columns.  The
    tablelist::tablelist command returns its
    pathName argument.  At the time this command is
    invoked, there must not exist a window named pathName,
    but pathName's parent must exist.-exportselection option), then it will observe the
    standard X11 protocols for handling the selection.  Tablelist widget
    selections are available as types STRING and
    UTF8_STRING; the value of the selection will be a text
    built by taking all of the rows having at least one non-hidden selected
    element, joining these elements together with tabs, and the resulting
    strings in turn with newlines.  If a tablelist widget that is
    exporting its selection is the selection owner and some other window claims
    ownership of the selection away from it, then the virtual event
    <<TablelistSelectionLost>> is
    generated.-xscrollcommand and
    -yscrollcommand options.  They also support
    scanning, as described below.-background, -font,
      -foreground, -selectbackground,
      and -selectforeground options can also be specified
      at column, row, and cell level, by using the columnconfigure, rowconfigure, and cellconfigure subcommands of the Tcl
      command associated with the tablelist widget.  For this reason, a
      particular cell can have up to four values for one and the same color or
      font option.  If these values conflict, then the option specified at
      the highest priority level is used.  The decreasing priority order
      is cell, row, column, widget. 
      If one of these options hasn't been specified at cell, row, or column level, or if its value for that level is an empty string (this is explicitly allowed), then that option will not be used at that particular level.
columncget, columnconfigure, configcolumnlist, and configcolumns commands:-align
        alignmentleft, right, or
        center.  This option also refers to the
        column's title if the -labelalign option hasn't been
        specified for the given column, or if its value is an empty
        string.  The -align option is tied to the
        alignment element corresponding to this column in
        the list specifying the value of the -columns option for the tablelist widget;
        changes in either will automatically be reflected in the other.-background
        color or -bg color-changesnipside
        boolean0, meaning that the snip string will be
        appended to the elements if the column's alignment is
        left or center and prepended to
        them in case the alignment is right.-editable
        boolean0.  The
        value of this option can be overridden for individual cells by using
        the cell configuration option of the same
        name.-editwindow
        namename may be one of entry (which
        is the default), text, spinbox
        (the latter for Tk version 8.4 or higher),
        checkbutton, ttk::entry,
        ttk::combobox, or
        ttk::checkbutton (the latter three only in the
        presence of the tile widget engine), or the value returned by one of
        the registration commands for widgets from the packages BWidget, Iwidgets, combobox (by Bryan Oakley), and Mentry (or Mentry_tile).  For example,
        you can use  -editwindow ComboBox 
        after registering the ComboBox widget for interactive cell
        editing with the aid of the tablelist::addBWidgetComboBox
        command.  Similarly, you can use  -editwindow
        combobox  after registering Bryan Oakley's
        combobox widget for interactive cell editing by invoking the
        tablelist::addOakleyCombobox
        command.  The value of this option can be overridden for
        individual cells by using the cell
        configuration option of the same name.-font font-foreground
        color or -fg color-formatcommand
        commandcommand is a
          nonempty string, then it is automatically concatenated with the
          cell's text, the resulting script is evaluated in the global scope,
          and the return value is displayed in the cell or added to the
          selection instead of the original data.  For example, if a time
          value in seconds is being inserted into the cell and
          command is the procedure formatDate
          defined as
          
            
proc formatDate clockVal {
    return [clock format $clockVal -format "%Y-%m-%d"]
}
          
          then the text displayed in the cell will be the date in the
          specified format, not the time value in seconds.  Notice that
          this option is only used for preparing the text to be displayed or
          returned when exporting the selection, and does not affect the
          internal cell contents.  For example, the get, getcolumns, getcells, rowcget, columncget, cellcget, sort, sortbycolumn, and sortbycolumnlist subcommands all
          operate on the original cell text, which is contained in the widget's
          internal list.  In the case of the above example, this will make
          it possible to sort the items very easily by time, with a second's
          precision, even if their visual representation only contains the
          year, month, and day.
The -formatcommand option comes in handy if
          only images or embedded windows are to be displayed in a column but
          the texts associated with the cells may not simply be empty strings
          because they are needed for other purposes (like sorting or
          editing).  In such cases, a procedure returning an empty string
          can be used as the option's value, thus making sure that the textual
          information contained in that column remains hidden.
In the more sophisticated case that the result of the formatting
          should also depend on the cell's row, you will have to invoke the
          formatinfo subcommand,
          which provides the necessary information about the cell whose content
          is being formatted.
-hide
        boolean0.  After toggling the hidden state of a column, the
        <<TablelistColHiddenStateChanged>>
        virtual event is generated.-labelalign
        alignmentleft, right, or
        center, or an empty string.  If this option
        hasn't been specified for the given column, or if its value is an empty
        string, then the header title will have the same alignment as the
        elements of the column, as given by the -align column configuration option or by
        the alignment element corresponding to this column
        in the list specifying the value of the -columns global option.-labelbackground
        color or -labelbg color-labelborderwidth screenDistance or
        -labelbd screenDistance-labelcommand command-labelcommand2 command-labelfont fontName-labelforeground color or
        -labelfg color-labelheight lines-labelpady screenDistance-labelrelief relief-labelactivebackground,
        -labelactiveforeground, and
        -labeldisabledforeground
        options are only defined at widget level; there are no column
        configuration options with these names.  The
        -labelheight option is only supported by the
        Tablelist package, but not by Tablelist_tile.-labelimage
        imageimage must be the result of an
        invocation of the  image create  command,
        or an empty string, specifying that no image is to be displayed. 
        If the label's text is right-aligned then the image will be displayed
        to the right of the text, otherwise to its left.  The text and the
        image are separated from each other by a gap corresponding to the width
        of a space character in the given label's font.-maxwidth
        widthwidth must be a number.  A positive value
        specifies the column's maximum width in average-size characters of the
        widget's font.  If width is negative, its
        absolute value is interpreted as a maximum column width in
        pixels.  Finally, a value of zero (which is the default) specifies
        that the column's maximum width is to be made just large enough to hold
        all the elements in the column, including its header.  This option
        is only relevant if the given column has dynamic width, i.e., if its
        width was set to 0.-name namerow,col, as described in the CELL INDICES section.  To avoid ambiguities,
        column names should be different from any other forms of column indices
        (like numbers, active, anchor,
        end, or any of their abbreviations).  They
        should also be different from (any abbreviations of) the string
        all, which may be specified as the value of the
        -stretch configuration
        option.  The default value is an empty string.-resizable
        boolean1.  This option
        is only relevant if the value of the -resizablecolumns widget
        configuration option is true.-selectbackground
        color-selectforeground
        color-showarrow
        booleansortbycolumn command with the given
        column index as first argument and the sortbycolumnlist command having the
        given column index as element of its first argument should place an
        arrow indicating the sort order into the column's label.  The
        default value is 1.  This option is only relevant if
        the value of the -showarrow widget configuration option is
        true.-showlinenumbers
        boolean0.
          The following details assume that the given column's
          -showlinenumbers option was set to true: 
          Associating the line numbers with the non-hidden rows takes place
          automatically whenever items are inserted, deleted, updated, moved,
          or sorted.  For increased efficiency, this is in most cases done
          at idle time.  For example, if several items are inserted into
          or deleted from the tablelist widget, then the necessary renumbering
          of the non-hidden rows will be performed as an idle callback, the
          next time the event loop is entered and there are no events to
          process.  The line numbers will override any previous contents
          of the column's cells.  They are, per default, displayed without
          leading zeros, but this (and the display format in general) can be
          changed with the aid of the -formatcommand column
          configuration option.
The sortbycolumn
          and sortbycolumnlist subcommands as
          well as the tablelist::sortByColumn
          and tablelist::addToSortColumns
          commands check the column indices passed to them as arguments and
          don't perform any sorting by those columns that have been configured
          to display the line numbers (see the corresponding descriptions for
          details).
-sortcommand
        command-sortmode option for the given column is
        command.  It specifies a command to be used
        for the comparison of the column's elements when invoking the
        sortbycolumn command
        with the given column index as first argument or the sortbycolumnlist command having the
        given column index as element of its first argument.  To compare
        two elements during the sortbycolumn or
        sortbycolumnlist operation,
        command is automatically concatenated with the two
        elements and the resulting script is evaluated.  The script should
        return an integer less than, equal to, or greater than zero if the
        first element is to be considered less than, equal to, or greater than
        the second, respectively.-sortmode
        modesortbycolumn command
          with the given column index as first argument or the
          sortbycolumnlist
          command having the given column index as element of its first
          argument.  mode may have any of the
          following values:| ascii | Use string comparison with ASCII collation order.  This
              is the default. | 
| command | Use the command specified by the -sortcommandcolumn
              configuration option to compare the column's elements. | 
| dictionary | Use dictionary-style comparison.  This is the same as ascii, except: (a) case is ignored except as
              a tie-breaker; (b) if two strings contain embedded numbers, the
              numbers compare as integers, not characters.  For example,bigBoysorts betweenbigbangandbigboy, andx10ysorts betweenx9yandx11y. | 
| integer | Convert the elements to integers and use integer
              comparison. | 
| real | Convert the elements to floating-point values and use floating-point comparison. | 
-stretchable
        boolean-stretch
        option for the tablelist widget; changes in either will automatically
        be reflected in the other.-text liststate is
        disabled then this option will be ignored.-title titletitle element
        corresponding to the given column in the list specifying the value of
        the -columns option for the
        tablelist widget; changes in either will automatically be reflected in
        the other.-width widthwidth must be a number.  A positive value
        specifies the column's width in average-size characters of the widget's
        font.  If width is negative, its absolute
        value is interpreted as a column width in pixels.  Finally, a
        value of zero specifies that the column's width is to be made just
        large enough to hold all the elements in the column, including its
        header (but no larger than the maximum width indicated by the
        -maxwidth column
        configuration option).  This option is tied to the
        width element corresponding to the given column in
        the list specifying the value of the -columns option for the tablelist widget;
        changes in either will automatically be reflected in the other.-wrap boolean0.  If the
        specified column has static width and the value of this option is true
        then elements of the column that are too long to be displayed in a
        single line will be broken up into several lines.  The same
        applies to the individual lines of the multi-line elements (i.e.,
        elements containing newline characters): they will also be wrapped if
        necessary, thus giving rise to additional line breaks.  In both
        cases, the line breaks are chosen at word boundaries wherever possible,
        and they are only used for the external representation of the strings
        contained in the given column, without affecting the internal contents
        of the cells.-background, -font,
        -foreground, -selectbackground,
        and -selectforeground column configuration options
        override the options of the same names set at widget level (but not the
        ones set at cell or row level) if the specified value is not an empty
        string.  See the COLORS AND FONTS
        section for further details on these options.rowcget, rowconfigure, configrowlist, and configrows commands:-background
        color or -bg color-font font-foreground
        color or -fg color-hide boolean0.  After toggling the hidden state of a row, the
          <<TablelistRowHiddenStateChanged>>
          virtual event is generated.  For technical reasons (the use of
          the -elide option for a text widget tag), this
          option is not supported for Tk versions earlier than 8.3.
          CAUTION: Tk versions 8.3 - 8.4.12 had a bug that caused a segmentation fault if the whole content of a text widget was elided. This bug was also present in Tk 8.5.a1 - 8.5.a3. When using one of these earlier Tk versions, this bug will produce a crash if all the rows of a tablelist widget are hidden. It is your responsibility to avoid such situations when using a Tk version having this bug!
-name namerow,col, as described in the CELL INDICES section.  To avoid ambiguities,
        row names should be different from any other forms of row indices (like
        numbers, keys, active, anchor,
        end, or any of their abbreviations).  The
        default value is an empty string.-selectable
        boolean1.  If the value
        0 was given then any attempt to select the item contained
        in this row with the aid of the  selection set  widget command or any
        of its elements by using the  cellselection set  command will be
        silently ignored; moreover, an existing old (cell) selection is removed
        from the row.-selectbackground
        color-selectforeground
        color-text liststate is
        disabled then this option will be ignored.-background, -font,
        -foreground, -selectbackground,
        and -selectforeground row configuration options
        override the options of the same names set at column or widget level
        (but not the ones set at cell level) if the specified value is not an
        empty string.  See the COLORS AND
        FONTS section for further details on these options.cellcget, cellconfigure, configcelllist, and configcells commands:-background
        color or -bg color-editable
        boolean0.  This
        option overrides the one of the same name
        for the column containing the given cell.-editwindow
        nameentry.  This option overrides the one of the same name for the column
        containing the given cell, and may have the same values as its
        column-related counterpart.-font font-foreground
        color or -fg color-image imageimage must be the result of an invocation of
          the  image create  command, or an empty
          string, specifying that no image is to be displayed.  If the
          column containing the cell is right-aligned then the image will be
          displayed to the right of the cell's text, otherwise to its
          left.  The text and the image are separated from each other by a
          gap of 4 pixels.  If for the same cell the -window option was specified with a
          nonempty value then it overrides the -image
          option.  If the tablelist's state is disabled then
          this option will be ignored.
          To display an image in a cell, Tablelist makes use of an embedded label widget (which is created on demand). This requires more memory than inserting the image directly into the tablelist's body, but has the main advantage of making it possible to adjust the width of the label containing the widget to fit into its column. This has the visual effect of cutting off part of the image from its right side. To make sure that images with transparent background will be displayed correctly, the background color of the label widgets containing the embedded images is automatically updated whenever necessary.
-selectbackground
        color-selectforeground
        color-stretchwindow
        boolean0.  If the value of this option is true and the
        column was specified with a non-zero width or was resized
        interactively, then the width of the embedded window (if any) will be
        adjusted automatically so the window fills the whole horizontal space
        belonging to that column (except the left and right margins). 
        Please note that in this case the cell's text will remain hidden. 
        On the other hand, if the column is of dynamic width then this option
        will be ignored and both the cell's text and its embedded window (if
        any) will be displayed as usual.  The easiest way to avoid this
        discrepancy is to set the cell's text to an empy string or make sure
        that the column's elements are always displayed as empty strings, by
        using the -formatcommand column configuration
        option.-text textstate is
        disabled then this option will be ignored.-window
        commandcommand may also be an empty string, specifying
          that no embedded window is to be displayed.  If the column
          containing the cell is right-aligned then the window will be
          displayed to the right of the cell's text, otherwise to its
          left.  The text and the window are separated from each other by
          a gap of 4 pixels.  If this option was specified with a nonempty
          value then it overrides the -image cell configuration option. 
          If the tablelist's state is
          disabled then this option will be ignored.
          There are several situations where the embedded window will be destroyed and later recreated by invoking the script mentioned above. For example, when changing the value of some of the tablelist widget or column configuration options, sorting the items, or moving a row or a column, the widget's contents will be redisplayed, which makes it necessary to recreate the embedded windows. This operation won't preserve the changes made on the embedded windows after their creation. For this reason, you should avoid any changes on embedded windows outside their creation scripts.
-windowdestroy
        command<Destroy> event from within its
        creation script, specified as the value of the -window cell configuration option.-background, -font,
        -foreground, -selectbackground,
        and -selectforeground cell configuration options
        override the options of the same names set at row, column, or widget
        level if the specified value is not an empty string.  See the
        COLORS AND FONTS section for further
        details on these options.-editable option
    on both cell and column level.  If the cell-level option was set
    explicitly then its value determines the editability of the cell's
    contents.  Otherwise the value of the column-level option is used to
    decide whether the cell can be edited interactively.  From this rule
    it follows that you can enable interactive cell editing for a whole column
    by setting its -editable option to true.  To
    exclude some of the column's cells from interactive editing, set their
    -editable option to false.editcell subcommand, which is invoked implicitly
    by clicking with the left mouse button into an editable cell or using
    keyboard navigation to move from one editable cell into another.  If
    the selection type is cell and the location cursor is
    in an editable cell, then the interactive editing of the active element can
    also be started by pressing Return or
    KP_Enter.  Per default, the editcell
    subcommand creates a temporary entry widget and embeds it into the cell
    whose index was passed to it as argument.  You can, however, use the
    -editwindow column or
    cell configuration option to specify another
    widget instead of an entry, like a Tk core text, spinbox, or checkbutton
    widget, or a tile entry, combobox, or checkbutton, or one of the 16
    currently supported widgets from the packages BWidget, Iwidgets, combobox (by Bryan Oakley), and Mentry (or Mentry_tile).  Before specifying
    a widget from one of these library packages as the value of the
    -editwindow column or cell configuration option, you
    must register it for interactive cell editing by invoking the corresponding
    tablelist::add* command.  The Tk core entry, text,
    spinbox, and checkbutton widgets, as well as the tile entry, combobox, and
    checkbutton widgets are automatically registered for cell editing.-formatcommand option of the cell's
    column.  However, if the value of the -editstartcommand configuration option
    is a nonempty string, then the text displayed in the cell is passed to that
    command as its last argument (following the tablelist's path name as well
    as the cell's row and column indices), the resulting script is evaluated in
    the global scope, and the return value becomes the edit window's
    contents.  From within this script you can invoke the
    cancelediting subcommand,
    which destroys the temporary embedded widget and cancels the editing of its
    contents.  The main goal of this script is, however, to enable you to
    define validations for the editing process.  This can be done either
    with the aid of the options for entry validation, supported by Tk versions
    8.3 and higher (see the entry reference page), or by using the
    widget callback package Wcb, available
    for Tk versions 8.0 and higher.  The Iwidgets package (available for
    Tk versions 8.0 or higher) provides its own validation facilities, which
    can equally be used if the edit window is a widget belonging to that
    extension.  In either case, you will need the path name of the
    temporary embedded widget or that of its entry or entry-like component; use
    the editwinpath and
    entrypath subcommands to get
    these path names.  Another purpose of the command indicated by the
    -editstartcommand option is to enable you to prepare
    the edit window in various other ways.  For example, if the latter is
    a combobox widget then you can set its -editable option
    to false or (for a tile combobox) set its state to
    readonly, and you will have to populate its listbox
    component.  In the same script, you can change some of the embedded
    widget's visual attributes (like its background, selection background, or
    selection foreground color).  (Notice that this can also be done with
    the aid of the Tk option database.)Control-i inserts a tab, Control-j
    inserts a newline, and if the edit window is a text widget then
    Return and KP_Enter insert a newline character,
    too.  Tab and Shift-Tab are used for
    navigation between the editable cells, just like Alt-Left,
    Alt-Right, Alt-Up, Alt-Down,
    Alt-Prior, Alt-Next, Alt-Home, and
    Alt-End (as well as Control-Home and
    Control-End, except in the case of a text widget).  On
    Mac OS Classic and Mac OS X Aqua the Command key is used
    instead of Alt.  The editing can be aborted with the
    Escape key (or by invoking the cancelediting subcommand) and terminated
    normally with Return or KP_Enter (together with
    Control for a text widget).  The bindings for the keys
    used for normal termination of the editing just invoke the
    finishediting subcommand;
    the latter can also be called explicitly to terminate the editing
    programmatically.  Normal termination is also triggered by clicking
    with the left mouse button anywhere in the tablelist's body, outside the
    cell just being edited, or moving into another editable cell by using
    keyboard navigation.-editendcommand configuration option is a
    nonempty string, then the edit window's final text is passed to that
    command as its last argument (following the tablelist's path name as well
    as the cell's row and column indices), the resulting script is evaluated in
    the global scope, and the return value becomes the cell's new internal
    contents after destroying the temporary embedded widget.  The main
    goal of this script is to enable you to do a final validation of the edit
    window's contents.  From within this script you can invoke the
    rejectinput subcommand,
    which prevents the script's return value from becoming the cell's new
    contents; this subcommand also prevents the destruction of the temporary
    embedded widget.  Another purpose of the command indicated by the
    -editendcommand option is to convert the edit window's
    text to the cell's new internal contents, which is necessary if, due
    to the -formatcommand
    column configuration option, the cell's internal value is different from
    its external representation.  See the description of the
    -forceeditendcommand
    option for more about the invocation of the command mentioned above.| number | Specifies the item as a numerical index, where 0corresponds to the first item in the tablelist. | 
| knumber | Specifies the item by its full key, composed of the letter kand the sequence number associated with the
          item, as returned by thegetkeyswidget command. | 
| active | Indicates the item containing the element that has the location
          cursor.  Depending on the selection type, this item as a whole
          or just its element having the location cursor will be displayed
          according to the value of the -activestyleconfiguration option when
          the tablelist has the keyboard focus.  This item is specified
          with theactivatewidget
          command or as the row containing the element specified with theactivatecellwidget
          command. | 
| anchor | Indicates the anchor point for the row selection, which is set
          with the selection
          anchorwidget command, or the row containing the
          anchor point for the cell selection, which is set with thecellselection
          anchorwidget command. | 
| end | Indicates the end of the tablelist.  For most commands this
          refers to the last item in the tablelist, but for a few commands such
          as index,insert, andinsertlist, as well as for the target of
          themovecommand it refers to
          the item just after the last one. | 
| @x,y | Indicates the item that covers the point in the tablelist window
          specified by xandy(in
          pixel coordinates).  If no item covers that point, then the
          closest item to that point is used.  The coordinatesxandyare expected to be
          relative to the tablelist window itself (not its body component). | 
| name | Specifies the row by the value of its -nameconfiguration option.namemust be different from all the above row
          indices, and should be unique (if several rows have the same name
          then this value is considered to indicate the first matching
          row). | 
In the widget command descriptions below, arguments named
      index, first,
      last, source, and
      target always contain row indices in one of the above
      forms.
| number | Specifies the column as a numerical index, where 0corresponds to the first column in the tablelist. | 
| active | Indicates the column containing the element that has the location
          cursor.  If the selection type is cellthen
          this element will be displayed according to the value of the-activestyleconfiguration option when the tablelist has the keyboard focus. 
          This element is specified with theactivatecellwidget command. | 
| anchor | Indicates the column containing the anchor point for the cell
          selection, which is set with the cellselection anchorwidget
          command. | 
| end | Indicates the last column of the tablelist, except for the
          commands insertcolumnsandinsertcolumnlist, as well as for
          the target of themovecolumncommand, in which cases it
          refers to the column just after the last one. | 
| @x,y | Indicates the column that covers the point in the tablelist
          window specified by xandy(in pixel coordinates).  If no column covers that point, then
          the closest column to that point is used.  The coordinatesxandyare expected to be
          relative to the tablelist window itself (not its body component). | 
| name | Specifies the column by the value of its -nameconfiguration option.namemust be different from all the above column
          indices, and should be unique (if several columns have the same name
          then this value is considered to indicate the first matching
          column). | 
In the widget command descriptions below, arguments named
      columnIndex, firstColumn,
      lastColumn, sourceColumn, and
      targetColumn always contain column indices in one of
      the above forms.
| row,col | Indicates the cell having the row index rowand column indexcol.rowmay be a number, a full key (of the formknumber),active,anchor,end(where the latter
          indicates the last row in the tablelist), or a row name.colmay be a number,active,anchor,end, or a column
          name. | 
| active | Indicates the element that has the location cursor.  If the
          selection type is cellthen this element will be
          displayed according to the value of the-activestyleconfiguration option when
          the tablelist has the keyboard focus.  This element is specified
          with theactivatecellwidget command. | 
| anchor | Indicates the anchor point for the cell selection, which is set
          with the cellselection
          anchorwidget command. | 
| end | Indicates the last cell in the last row of the tablelist. | 
| @x,y | Indicates the cell that covers the point in the tablelist window
          specified by xandy(in
          pixel coordinates).  If no cell covers that point, then the
          closest cell to that point is used.  The coordinatesxandyare expected to be
          relative to the tablelist window itself (not its body
          component). | 
In the widget command descriptions below, arguments named
      cellIndex, firstCell, and
      lastCell always contain cell indices in one of the
      above forms.
tablelist::tablelist command creates a new Tcl
      command whose name is pathName.  This command
      may be used to invoke various operations on the widget.  It has the
      following general form:
      pathName option ?arg arg ...?
option and the args determine
    the exact behavior of the command.  The following commands are
    possible for tablelist widgets:pathName activate
        indexindex if the tablelist's state is not
        disabled.  If index is
        outside the range of items in the tablelist or it refers to a hidden
        item then the closest non-hidden item is activated.  The active
        item is drawn as specified by the -activestyle configuration option when
        the widget has the input focus and the selection type is
        row.  Its index may be retrieved with the
        index active.  Returns an empty string.pathName activatecell
        cellIndexcellIndex if the tablelist's state is not
        disabled.  If cellIndex is
        outside the range of elements in the tablelist or it refers to a hidden
        element, then the closest non-hidden element is activated.  The
        active element is drawn as specified by the -activestyle configuration option when
        the widget has the input focus and the selection type is
        cell.  Its index may be retrieved with the
        cell index active.  Returns an empty
        string.pathName attrib ?name?
        ?value name value ...?name is specified, the command returns a list of
        pairs, each of which contains the name and the value of an attribute
        for pathName.  If name is
        specified with no value, then the command returns
        the value of the one named attribute, or an empty string if no
        corresponding value exists (you can use the hasattrib subcommand to distinguish this
        case from the one that the value of an existing attribute is an
        empty string).  If one or more
        name-value pairs are specified,
        then the command sets the given widget attribute(s) to the given
        value(s); in this case the return value is an empty string. 
        name may be an arbitrary string.pathName bbox
        indexpathName
        bodypathpathName bodytagTablelistBody in the list of binding
        tags of the tablelist descendants mentioned above, and is designed to
        be used when defining individual binding scripts for tablelist
        widgets.  The main advantage of using this tag instead of the path
        name of the tablelist's body is that it enables you to write event
        handling scripts that are valid not only for the tablelist's body but
        also for the separators, multi-line cells, and embedded images.pathName
        canceleditingeditcell subcommand, destroys the temporary
        widget embedded into the cell, and restores the original cell
        contents.  This command enables you to cancel the interactive cell
        editing from within the Tcl command specified by the -editstartcommand configuration
        option if that pre-edit callback encounters an error when preparing the
        text to be inserted into the edit window.  The command is also
        invoked implicitly by pressing the Escape key when a cell
        is being edited.  The return value is an empty string. 
        Immediately before returning this value, the command generates the
        virtual event
        <<TablelistCellRestored>>.  If no
        cell was being edited when the command was invoked then an empty string
        is returned without generating a virtual event.pathName cellattrib
        cellIndex ?name? ?value name value
        ...?cellIndex.  If no name is
        specified, the command returns a list of pairs, each of which contains
        the name and the value of an attribute for the cell.  If
        name is specified with no
        value, then the command returns the value of the
        one named cell attribute, or an empty string if no corresponding value
        exists (you can use the hascellattrib subcommand to distinguish
        this case from the one that the value of an existing cell
        attribute is an empty string).  If one or more
        name-value pairs are specified,
        then the command sets the given cell attribute(s) to the given
        value(s); in this case the return value is an empty string. 
        name may be an arbitrary string.pathName cellcget
        cellIndex optionoption for the cell specified by
        cellIndex.  option may
        have any of the values accepted by the cellconfigure command.pathName cellconfigure
        cellIndex ?option? ?value option
        value ...?cellIndex.  If no option
        is specified, the command returns a list describing all of the
        available options for the cell (see
        Tk_ConfigureInfo for information on the format of
        this list).  If option is specified with no
        value, then the command returns a list describing
        the one named option (this list will be identical to the corresponding
        sublist of the value returned if no option is
        specified).  If one or more
        option-value pairs are
        specified, then the command modifies the given cell option(s) to have
        the given value(s); in this case the return value is an empty
        string.  option may have any of the values
        described in the CELL CONFIGURATION OPTIONS
        section.pathName cellindex
        cellIndexcellIndex, in the form
        row,col, where
        row and col are integers.pathName cellselection
        option argsoption:pathName cellselection anchor
            cellIndexcellIndex.  If
            cellIndex refers to a nonexistent or hidden
            element, then the closest non-hidden element is used.  The
            cell selection anchor is the end of the cell selection that is
            fixed while dragging out a cell selection with the mouse if the
            selection type is cell.  The cell index
            anchor may be used to refer to the anchor
            element.pathName cellselection clear
            firstCell lastCellpathName cellselection clear
            cellIndexListfirstCell
            and lastCell (inclusive) or corresponding to
            the cell indices specified by the list
            cellIndexList are selected, they are
            deselected.  The selection state is not changed for elements
            outside the range given in the first form of the command or
            different from those specified by the cell index list given in its
            second form.pathName cellselection includes
            cellIndex1 if the element indicated by
            cellIndex is currently selected, 0
            if it isn't.pathName cellselection set
            firstCell lastCellpathName cellselection set
            cellIndexListfirstCell and
            lastCell, inclusive, or corresponding to the
            indices specified by the list cellIndexList,
            without affecting the selection state of any other elements. 
            An element is viewed as selectable if and only if the value of the
            -selectable option of
            the row containing it is true.state is
        disabled and option is
        different from includes then the command just
        returns an empty string, without performing any of the above
        actions.pathName cget
        optionoption, which may have any of the values accepted
        by the tablelist::tablelist command.pathName columnattrib
        columnIndex ?name? ?value name value
        ...?columnIndex.  If no name
        is specified, the command returns a list of pairs, each of which
        contains the name and the value of an attribute for the column. 
        If name is specified with no
        value, then the command returns the value of the
        one named column attribute, or an empty string if no corresponding
        value exists (you can use the hascolumnattrib subcommand to
        distinguish this case from the one that the value of an existing
        column attribute is an empty string).  If one or more
        name-value pairs are specified,
        then the command sets the given column attribute(s) to the given
        value(s); in this case the return value is an empty string. 
        name may be an arbitrary string.pathName columncget
        columnIndex optionoption for the column specified by
        columnIndex.  option may
        have any of the values accepted by the columnconfigure command.pathName
        columnconfigure columnIndex ?option? ?value
        option value ...?columnIndex.  If no
        option is specified, the command returns a list
        describing all of the available options for the column (see
        Tk_ConfigureInfo for information on the format of
        this list).  If option is specified with no
        value, then the command returns a list describing
        the one named option (this list will be identical to the corresponding
        sublist of the value returned if no option is
        specified).  If one or more
        option-value pairs are
        specified, then the command modifies the given column option(s) to have
        the given value(s); in this case the return value is an empty
        string.  option may have any of the values
        described in the COLUMN CONFIGURATION
        OPTIONS section.pathName
        columncountpathName columnindex
        columnIndexcolumnIndex.pathName columnwidth
        columnIndex
        ?-requested|-stretched|-total?columnIndex.  If the optional argument is
        -requested (which is the default) then the return
        value is the number of pixels corresponding to the column width
        specified by the -columns
        widget or -width column
        configuration option (possibly overridden by interactive column
        resizing); if the column width was specified as 0 (and was
        not changed by interactive column resizing) then the return value is
        the actual number of pixels corresponding to the widest non-hidden
        element of the column, including its header.  With the
        -stretched option, the command returns the column
        width obtained by increasing the value described above by the number of
        additional pixels that might have been added to the requested column
        width by a stretch operation (see the -stretch widget and -stretchable column configuration
        options).  Finally, if the optional argument is
        -total then the return value is the stretched
        column width increased by the number of pixels corresponding to the
        left and right margins within the column; this value equals the width
        of the header label if the tablelist widget is mapped.pathName
        configcelllist cellConfigSpecListcellConfigSpecList, the command modifies the
          given option of the given cell to have the given value.  The
          argument cellConfigSpecList must be a list of the
          form
          cellIndex option value cellIndex option value ...
where each option may have any of the values
          described in the CELL CONFIGURATION
          OPTIONS section.  The return value is an empty string.
This command has the same effect as
eval [list $pathName configcells] $cellConfigSpecList
but it is more efficient and easier to use.
pathName configcells
        ?cellIndex option value cellIndex
        option value ...?cellIndex, option,
        and value, the command modifies the given option of
        the given cell to have the given value.  Each
        option may have any of the values described in the
        CELL CONFIGURATION OPTIONS section. 
        The return value is an empty string.pathName
        configcolumnlist columnConfigSpecListcolumnConfigSpecList, the command modifies the
          given option of the given column to have the given value.  The
          argument columnConfigSpecList must be a list of
          the form
          columnIndex option value columnIndex option value ...
where each option may have any of the values
          described in the COLUMN CONFIGURATION
          OPTIONS section.  The return value is an empty string.
This command has the same effect as
eval [list $pathName configcolumns] $columnConfigSpecList
but it is more efficient and easier to use.
pathName
        configcolumns ?columnIndex option value
        columnIndex option value ...?columnIndex,
        option, and value, the command
        modifies the given option of the given column to have the given
        value.  Each option may have any of the values
        described in the COLUMN CONFIGURATION
        OPTIONS section.  The return value is an empty string.pathName configrowlist
        rowConfigSpecListrowConfigSpecList, the command modifies the given
          option of the given row to have the given value.  The argument
          rowConfigSpecList must be a list of the form
          index option value index option value ...
where each option may have any of the values
          described in the ROW CONFIGURATION OPTIONS
          section.  The return value is an empty string.
This command has the same effect as
eval [list $pathName configrows] $rowConfigSpecList
but it is more efficient and easier to use.
pathName configrows
        ?index option value index option
        value ...?index, option, and
        value, the command modifies the given option of the
        given row to have the given value.  Each
        option may have any of the values described in the
        ROW CONFIGURATION OPTIONS section.  The
        return value is an empty string.pathName configure
        ?option? ?value option value
        ...?option is specified, the command returns a
        list describing all of the available options for
        pathName (see Tk_ConfigureInfo
        for information on the format of this list).  If
        option is specified with no
        value, then the command returns a list describing
        the one named option (this list will be identical to the corresponding
        sublist of the value returned if no option is
        specified).  If one or more
        option-value pairs are
        specified, then the command modifies the given widget option(s) to have
        the given value(s); in this case the return value is an empty
        string.  option may have any of the values
        accepted by the tablelist::tablelist command.pathName containing
        y-1.  The coordinate y is
        expected to be relative to the tablelist window itself (not its body
        component).pathName
        containingcell x y-1.  The coordinates x and
        y are expected to be relative to the tablelist
        window itself (not its body component).pathName
        containingcolumn x-1.  The coordinate x is
        expected to be relative to the tablelist window itself (not its body
        component).pathName
        curcellselectionrow,col, where row and
        col are numbers) of all of the non-hidden elements
        in the tablelist that are currently selected.  If there are no
        such elements in the tablelist then an empty string is returned.pathName
        curselectionpathName delete first
        lastpathName delete indexListstate is not
        disabled.  In the first form of the command,
        first and last are indices
        specifying the first and last items in the range to delete.  The
        command's second form accepts a list indexList of
        indices specifying the items to be deleted.  Returns an empty
        string.pathName deletecolumns
        firstColumn lastColumnpathName deletecolumns
        columnIndexListstate is not
        disabled.  In the first form of the command,
        firstColumn and lastColumn are
        indices specifying the first and last columns in the range to
        delete.  The command's second form accepts a list
        columnIndexList of indices specifying the columns
        to be deleted.  Returns an empty string.pathName editcell
        cellIndexstate is not
        disabled, the cell's row and column are not hidden,
        and the cell is editable.  Returns an empty string.  See the
        INTERACTIVE CELL EDITING section for
        details on editablity and on the editing process.pathName
        editwintagentrypath
          subcommand).  This binding tag precedes the tag
          TablelistEdit in the
          list of binding tags of the edit window components mentioned above,
          and is designed to be used when defining individual binding scripts
          for controlling the interactive cell editing.  For example, the
          following command will replace the standard behavior of the
          Return key during cell editing in the tablelist widget
          .tbl with that of the Tab key:
          bind [.tbl editwintag] <Return> "[bind TablelistEdit <Tab>]; break"
pathName
        editwinpatheditcell subcommand.  If no cell is
        currently being edited then the return value is an empty string. 
        This subcommand enables you to access the edit window from within the
        commands specified by the -editstartcommand and
        -editendcommand
        configuration options.pathName
        entrypatheditcell
        subcommand.  If no cell is currently being edited or the editing
        is taking place with the aid of a Tk or tile checkbutton or mentry
        widget then the return value is an empty string; otherwise it is the
        path name of a Tk or tile entry, Tk text or spinbox, or BWidget Entry
        widget, which can be the edit window itself or one of its
        descendants.  This subcommand enables you to access the entry or
        entry-like component of the temporary embedded widget from within the
        commands specified by the -editstartcommand and
        -editendcommand
        configuration options.pathName fillcolumn
        columnIndex texttext.pathName
        finisheditingeditcell subcommand by destroying the
          temporary widget embedded into the cell and updating the cell's
          contents.  The exact steps involved are as follows:  First,
          the widget's final text is compared to its original one.  If
          they are equal then the edit window is destroyed and the cell's
          original contents are restored.  If the two strings are
          different and the value of the -editendcommand configuration option
          is a nonempty string, then the widget's final text is passed to that
          command as its last argument (following the tablelist's path name as
          well as the cell's row and column indices), the resulting script is
          evaluated in the global scope, and the return value becomes the
          cell's new contents after destroying the edit window.  However,
          if from within this script the rejectinput subcommand was invoked then
          the cell's value is not changed and the embedded widget remains
          displayed in the cell; in this case the command returns the boolean
          value 0.  In all the other cases, the return value
          is 1.  Immediately before returning the value
          1, the command generates the virtual event
          <<TablelistCellUpdated>>.  If no
          cell was being edited when the command was invoked then the same
          value 1 is returned but no virtual event is generated.
          This subcommand is called implicitly by pressing
          Return or KP_Enter (together with
          Control if the edit window is a text widget) when
          editing a cell, or by clicking with the left mouse button anywhere in
          the tablelist's body, outside the cell just being edited, or moving
          into another editable cell by using keyboard navigation.
There are also situations where an explicit invocation of this subcommand is needed, in order to make sure that the cell just being edited gets updated with the text entered by the user. For example, if a tablelist widget is part of a dialog used for editing some data, then the binding script associated with the button designed to accept the data should call this subcommand, because otherwise, if the button is pressed during interactive cell editing then the text entered into the edit window will get lost.
pathName
        formatinfo-formatcommand column
          configuration option.  It returns a three-element list
          containing information about the tablelist cell whose content is
          being formatted with the aid of that command.  The first element
          of the list is the full key (of the form
          knumber) associated with the item
          containing the tablelist element that is being formatted.  The
          second and third elements of the list are the cell's row and column
          indices.
          This subcommand is needed in cases where the result of the
          formatting should depend on the cell's row.  To be able to use
          it, specify the value of the -formatcommand
          column configuration option as  [list
          formatCommand pathName],  like in the
          following example:
            
.tbl columnconfigure 1 -formatcommand [list formatValue .tbl]
proc formatValue {tbl val} {
    # Get information about the cell whose content is being formatted
    foreach {key row col} [$tbl formatinfo] {}
    # Return a string depending on $val and $row (or $key)
    . . .
}
          
        pathName get first
        lastpathName get indexListfirst and last,
        inclusive.  The value returned by the second form depends on the
        number of elements in the list indexList: if the
        latter contains exactly one index then the return value is the
        tablelist item indicated by that index (or an empty string if the index
        refers to a non-existent item); otherwise the command returns the list
        of all of the tablelist items corresponding to the indices specified by
        indexList.pathName getcells
        firstCell lastCellpathName getcells cellIndexListfirstCell and lastCell,
        inclusive.  The value returned by the second form depends on the
        number of elements in the list cellIndexList: if
        the latter contains exactly one cell index then the return value is the
        tablelist element indicated by that cell index; otherwise the command
        returns the list of all of the tablelist elements corresponding to the
        cell indices specified by cellIndexList.pathName getcolumns
        firstColumn lastColumnpathName getcolumns
        columnIndexListfirstColumn and
        lastColumn, inclusive, and consists of all of the
        tablelist elements contained in that column.  The value returned
        by the second form depends on the number of elements in the list
        columnIndexList: if the latter contains exactly one
        column index then the return value is a list consisting of all of the
        tablelist elements contained in the column indicated by that column
        index; otherwise the command returns a list whose elements are lists
        themselves, where each of the sublists corresponds to exactly one
        column index in columnIndexList and consists of all
        of the tablelist elements contained in that column.pathName getkeys first
        lastpathName getkeys indexListfirst and last,
        inclusive.  The value returned by the second form depends on the
        number of elements in the list indexList: if the
        latter contains exactly one index then the return value is the sequence
        number associated with the tablelist item indicated by that index (or
        an empty string if the index refers to a non-existent item); otherwise
        the command returns the list of all of the sequence numbers associated
        with the tablelist items corresponding to the indices specified by
        indexList.  Each item of a tablelist widget
        has a unique sequence number that remains unchanged until the item is
        deleted, thus acting as a key that uniquely identifies the item even if
        the latter's position (i.e., row index) changes.  This command
        provides read-only access to these internal item IDs.pathName hasattrib
        name1 if the attribute name
        exists and 0 otherwise.pathName hascellattrib
        cellIndex name1 if the attribute name
        for the cell given by cellIndex exists and
        0 otherwise.pathName
        hascolumnattrib columnIndex name1 if the attribute name
        for the column given by columnIndex exists and
        0 otherwise.pathName hasrowattrib
        index name1 if the attribute name
        for the row given by index exists and
        0 otherwise.pathName
        imagelabelpath cellIndexcellIndex, as
        specified with the -image
        option of the cellconfigure subcommand.  If no
        image is currently embedded into the cell then the return value is an
        empty string.pathName index
        indexindex.  If index is
        end then the return value is the number of items in
        the tablelist (not the index of the last item).pathName insert index
        ?item item ...?index if the tablelist's
        state is not
        disabled.  If index equals
        the number of items or is specified as end then the
        new items are added to the end of the widget's list.  Tabulator
        characters are displayed as \t (i.e., a backslash followed
        by a t) but are inserted unchanged into the internal
        list.  Newline characters will force line breaks, i.e., will give
        rise to multi-line elements (which are displayed in embedded message
        widgets, created on demand).  The return value is an empty
        string.pathName
        insertcolumnlist columnIndex
        columnListcolumnList just before the column given by
          columnIndex if the tablelist's state is not
          disabled.  If
          columnIndex equals the number of columns or is
          specified as end then the new columns are added
          to the end of the column list.  The argument
          columnList must be a list containing the width,
          title, and optional alignment specifications for the new columns, in
          the same form as in the case of the -columns configuration option.  The
          return value is an empty string.  The elements of the new
          columns are initially empty strings; the easiest way to change these
          values is to use the fillcolumn subcommand or the
          -text column
          configuration option.
          This command has the same effect as
eval [list $pathName insertcolumns $columnIndex] $columnList
but it is more efficient and easier to use.
pathName
        insertcolumns columnIndex ?width title
        ?alignment? width title ?alignment?
        ...?columnIndex if the tablelist's state is not
        disabled.  If columnIndex
        equals the number of columns or is specified as end
        then the new columns are added to the end of the column list.  The
        arguments following the column index have the same meanings as in the
        case of the -columns
        configuration option.  The return value is an empty string. 
        The elements of the new columns are initially empty strings; the
        easiest way to change these values is to use the fillcolumn subcommand or the
        -text column configuration
        option.pathName insertlist
        index itemListitemList in the
          widget's internal list just before the item given by
          index if the tablelist's state is not
          disabled.  If index
          equals the number of items or is specified as end
          then the new items are added to the end of the widget's list. 
          Tabulator characters are displayed as \t (i.e., a
          backslash followed by a t) but are inserted unchanged
          into the internal list.  Newline characters will force line
          breaks, i.e., will give rise to multi-line elements (which are
          displayed in embedded message widgets, created on demand).  The
          return value is an empty string.
          This command has the same effect as
eval [list $pathName insert $index] $itemList
but it is more efficient and easier to use.
pathName
        iselemsnipped cellIndex fullTextName1 if the text displayed in the cell
        specified by cellIndex is snipped and
        0 otherwise.  In both cases, the full (unsnipped)
        cell text is stored in the variable having the name given by
        fullTextName; this full text can be the cell's
        contents or the string obtained from the latter by using the
        -formatcommand
        option of the cell's column.  The most common invocation of this
        command occurs within the procedure specified as the value of the
        -tooltipaddcommand
        configuration option.pathName
        istitlesnipped columnIndex
        fullTextName1 if the text displayed in the
        header label specified by columnIndex is snipped
        and 0 otherwise.  In both cases, the full (unsnipped)
        label text is stored in the variable having the name given by
        fullTextName.  The most common invocation of
        this command occurs within the procedure specified as the value of the
        -tooltipaddcommand
        configuration option.pathName
        itemlistvarupvar
          command, like in the following example:
          upvar #0 [.tbl itemlistvar] itemList
In this example, the value of the variable itemList
          will be the internal list of the tablelist widget
          .tbl.  Each element of the widget's internal list
          corresponds to one item, and it is in turn a list whose elements
          correspond to the elements of that item, except that it has one
          additional element, holding the item's key.
The itemlistvar command provides an efficient
          way for accessing this internal list, instead of retrieving the items
          with the get subcommand or
          using the -listvariable option (these methods
          consume significantly more memory).  It can be useful in
          situations where the elements of a tablelist widget are to be
          accessed for creating text files, HTML output, XML data, database
          commands, etc.  This should, however, be a strictly readonly
          access; otherwise the results will be unpredictable!
pathName labelpath
        columnIndexcolumnIndex.pathName labelspathName move source
        targetsource just before
        the one given by target if the tablelist's
        state is not
        disabled.  If target
        equals the nunber of items or is specified as end
        then the source item is moved after the last one.  Returns an
        empty string.pathName movecolumn
        sourceColumn targetColumnsourceColumn just
        before the one given by targetColumn if the
        tablelist's state is not
        disabled.  If targetColumn
        equals the number of columns or is specified as end
        then the source column is moved after the last one.  Returns an
        empty string.pathName nearest
        yy is expected to
        be relative to the tablelist window itself (not its body
        component).pathName nearestcell
        x yx and y are expected to be
        relative to the tablelist window itself (not its body component).pathName nearestcolumn
        xx is expected to
        be relative to the tablelist window itself (not its body
        component).pathName
        rejectinput-editendcommand
        configuration option, then this subcommand prevents the termination of
        the interactive editing of the contents of the cell whose index was
        passed to the editcell
        subcommand.  It invokes the seecell subcommand to make sure the
        respective cell becomes visible (in case it was scrolled out of view),
        and sets the focus to the temporary widget embedded into the
        cell.  This command enables you to reject the widget's text during
        the final validation of the string intended to become the new cell
        contents.pathName
        resetsortinfosortcolumn and sortorder will return -1 and
        an empty string, respectively.  Similarly, subsequent invocations
        of sortcolumnlist and
        sortorderlist will
        return an empty string.  This command also removes any existing
        up- or down-arrows displayed by an earlier invocation of
        sortbycolumn or
        sortbycolumnlist.  The return
        value is an empty string.pathName rowattrib
        index ?name? ?value name value
        ...?index.  If no name is
        specified, the command returns a list of pairs, each of which contains
        the name and the value of an attribute for the row.  If
        name is specified with no
        value, then the command returns the value of the
        one named row attribute, or an empty string if no corresponding value
        exists (you can use the hasrowattrib subcommand to distinguish
        this case from the one that the value of an existing row
        attribute is an empty string).  If one or more
        name-value pairs are specified,
        then the command sets the given row attribute(s) to the given value(s);
        in this case the return value is an empty string. 
        name may be an arbitrary string.pathName rowcget index
        optionoption for the row specified by
        index.  option may have
        any of the values accepted by the rowconfigure command.pathName rowconfigure
        index ?option? ?value option value
        ...?index.  If no option is
        specified, the command returns a list describing all of the available
        options for the row (see Tk_ConfigureInfo for
        information on the format of this list).  If
        option is specified with no
        value, then the command returns a list describing
        the one named option (this list will be identical to the corresponding
        sublist of the value returned if no option is
        specified).  If one or more
        option-value pairs are
        specified, then the command modifies the given row option(s) to have
        the given value(s); in this case the return value is an empty
        string.  option may have any of the values
        described in the ROW CONFIGURATION OPTIONS
        section.pathName scan option
        argsoption:pathName scan mark x
            yx and y and the
            current view in the tablelist window; used in conjunction with
            later  scan dragto 
            commands.  Typically this command is associated with a mouse
            button press in the body component of the widget.  It returns
            an empty string.  The coordinates x and
            y are expected to be relative to the tablelist
            window itself (not its body component).pathName scan dragto x
            yx and y arguments to the
            last  scan mark  command for
            the widget.  It then adjusts the view (the vertical one only
            in the body component) by 10 times the difference in
            coordinates.  This command is typically associated with mouse
            motion events in the body component of the widget, to produce the
            effect of dragging the table at high speed through the
            window.  The return value is an empty string.  The
            coordinates x and y are
            expected to be relative to the tablelist window itself (not its
            body component).pathName see
        indexindex is visible.  If the item is already
        visible then the command has no effect; if the item is near one edge of
        the window then the tablelist scrolls to bring the item into view at
        the edge; otherwise the tablelist scrolls to center the item.pathName seecell
        cellIndexcellIndex is visible.  If the cell is already
        visible then the command has no effect; if the cell is near one edge of
        the window then the tablelist scrolls to bring the cell into view at
        the edge; otherwise the tablelist scrolls to center the cell.  If
        the value of the -titlecolumns option is positive then
        the centering of the cell is only done vertically; the horizontal
        scrolling (which in this case is performed column-wise) will just bring
        the cell into view next to the title columns or at the right edge of
        the window.pathName seecolumn
        columnIndexcolumnIndex is visible.  If the column is
        already visible then the command has no effect; if the column is near
        one edge of the window then the tablelist scrolls horizontally to bring
        the column into view at the edge; otherwise the tablelist scrolls
        horizontally to center the column.  If the value of the
        -titlecolumns option is
        positive then the horizontal scrolling (which in this case is performed
        column-wise) will just bring the column into view next to the title
        columns or at the right edge of the window.pathName selection
        option argsoption:pathName selection anchor
            indexindex.  If index
            refers to a nonexistent or hidden item, then the closest non-hidden
            item is used.  The selection anchor is the end of the
            selection that is fixed while dragging out a selection with the
            mouse if the selection type is row.  The
            index anchor may be used to refer to the anchor
            item.pathName selection clear first
            lastpathName selection clear
            indexListfirst and
            last (inclusive) or corresponding to the
            indices specified by the list indexList contain
            at least one selected cell, they are deselected.  The
            selection state is not changed for items outside the range given in
            the first form of the command or different from those specified by
            the index list given in its second form.pathName selection includes
            index1 if the item indicated by
            index contains at least one non-hidden selected
            cell, 0 if it doesn't.pathName selection set first
            lastpathName selection set
            indexListfirst and last, inclusive,
            or corresponding to the indices specified by the list
            indexList, without affecting the selection
            state of any other items.state is
        disabled and option is
        different from includes then the command just
        returns an empty string, without performing any of the above
        actions.pathName separatorpath
        ?columnIndex?-titlecolumns option is positive and an
        empty string otherwise.  If the optional argument is present, then
        the command returns the path name of the separator attached to the
        right edge of the header label indicated by
        columnIndex if the value of the -showseparators configuration option
        is true and an empty string otherwise.pathName
        separators-titlecolumns option is positive then
        the first element of the list will be the path name of the special
        separator displayed to mark the end of the title columns.  Whether
        the path names of the other separators are included in the list,
        depends on the value of the -showseparators configuration
        option.pathName sizepathName sort
        ?-increasing|-decreasing?-increasing.  Uses the value of the
        -sortcommand widget
        configuration option as comparison command. 
        sort also removes any existing up- or down-arrows
        displayed by an earlier invocation of sortbycolumn or sortbycolumnlist.  After
        sorting the items, the command conditionally adjusts the vertical view
        as follows: (a) if interactive cell editing is in progress then the
        cell being edited is brought into view; (b) else, if exactly one item
        is selected then the view is shifted to bring that item into view; (c)
        else, if the tablelist's body is the most recent window to have the
        input focus among all the windows in the same top-level as the widget
        itself then the currently active item is brought into view.pathName sortbycolumn
        columnIndex ?-increasing|-decreasing?columnIndex, in increasing or decreasing order,
          as specified by the optional argument.  The default is
          -increasing.  The sorting process is
          controlled by the values of the -sortmode and -sortcommand options for the given
          column.  If both the value of the -showarrow configuration option and that
          of the -showarrow
          option for the specified column are true then an up- or down-arrow
          indicating the sort order will be placed into the column's
          label.  The shape of the arrow depends on the command's optional
          argument and on the value of the -incrarrowtype configuration
          option.  If the label's text is right-aligned then the arrow
          will be displayed on the left side of the label, otherwise on its
          right side.  After sorting the items, the vertical view is
          adjusted in the same way as in the case of the sort subcommand.
          The actions described above are only performed if the specified
          column's -showlinenumbers option hasn't
          been set to true.
pathName
        sortbycolumnlist columnIndexList
        ?sortOrderList?columnIndexList argument, which must be a list of
          distinct column indices.  Only those elements of this list are
          considered significant that identify columns whose -showlinenumbers option hasn't
          been set to true.
          The items are first sorted based on the column specified by the
          last significant element of columnIndexList, then
          based on the one given by the last but one significant element, and
          so on.  The order of each sort operation is taken from the
          optional argument sortOrderList, whose elements
          must be (abbreviations of) increasing or
          decreasing.  If this argument was not
          specified or contains less elements than
          columnIndexList then the missing sort orders are
          assumed to be increasing.  Each sorting
          process is controlled by the values of the -sortmode and -sortcommand options for the
          respective column.  If the column's index was specified among
          the first 9 significant elements of
          columnIndexList and both the value of the
          -showarrow configuration
          option and that of the -showarrow option for that column are
          true then an up- or down-arrow indicating the sort order will be
          placed into the column's label.  The shape of the arrow depends
          on the respective sort order and on the value of the
          -incrarrowtype
          configuration option.  If the label's text is right-aligned then
          the arrow will be displayed on the left side of the label, otherwise
          on its right side.  If more than one sort arrows are to be
          displayed then the first 9 sort ranks (1 for the first
          significant element of columnIndexList,
          2 for the second one, and so on) will also be shown to
          the right of the arrows.  After sorting the items, the vertical
          view is adjusted in the same way as in the case of the
          sort subcommand.
pathName
        sortcolumnsortbycolumn or sortbycolumnlist command, or
        -1 if they were last sorted with the sort command or haven't been sorted at all, or
        the sort information was reset by invoking resetsortinfo.pathName
        sortcolumnlistsortbycolumnlist or
        sortbycolumn command
        (in the second case the list will contain exactly one element), or an
        empty string if they were last sorted with the sort command or haven't been sorted at all, or
        the sort information was reset by invoking resetsortinfo.pathName
        sortorderincreasing or
        decreasing) from the last sorting performed by the
        sort, sortbycolumn, or sortbycolumnlist command, or an
        empty string if the items haven't been sorted at all, or the sort
        information was reset by invoking resetsortinfo.pathName
        sortorderlistincreasing or decreasing) from
        the last invocation of the sortbycolumnlist or
        sortbycolumn command
        (in the second case the list will contain exactly one element), or an
        empty string if the items were last sorted with the sort command or haven't been sorted at all, or
        the sort information was reset by invoking resetsortinfo.pathName
        togglecolumnhide firstColumn lastColumnpathName togglecolumnhide
        columnIndexList-hide option for one or more columns of the
        tablelist widget.  In the first form of the command,
        firstColumn and lastColumn are
        indices specifying the first and last columns in the range whose
        visibility is to be toggled.  The command's second form accepts a
        list columnIndexList of indices specifying the
        columns whose visibility is to be toggled.  Returns an empty
        string.  After toggling the hidden state of the specified columns,
        the <<TablelistColHiddenStateChanged>>
        virtual event is generated.  The main advantage of using this
        command instead of invoking columnconfigure for each of the
        specified columns is that it causes only one redisplay of the widget's
        contents, thus being significantly faster.pathName togglerowhide
        first lastpathName togglerowhide indexList-hide option for one or more rows of the
          tablelist widget.  In the first form of the command,
          first and last are indices
          specifying the first and last rows in the range whose visibility is
          to be toggled.  The command's second form accepts a list
          indexList of indices specifying the rows whose
          visibility is to be toggled.  Returns an empty string. 
          After toggling the hidden state of the specified rows, the
          <<TablelistRowHiddenStateChanged>>
          virtual event is generated.  Just like the
          -hide row configuration option, this subcommand
          is not supported for Tk versions earlier than 8.3.
          CAUTION: Tk versions 8.3 - 8.4.12 had a bug that caused a segmentation fault if the whole content of a text widget was elided. This bug was also present in Tk 8.5.a1 - 8.5.a3. When using one of these earlier Tk versions, this bug will produce a crash if all the rows of a tablelist widget are hidden. It is your responsibility to avoid such situations when using a Tk version having this bug!
pathName unsetattrib
        namename.  Returns an
        empty string.pathName
        unsetcellattrib cellIndex namename for the cell given by
        cellIndex.  Returns an empty string.pathName
        unsetcolumnattrib columnIndex namename for the column given
        by columnIndex.  Returns an empty string.pathName
        unsetrowattrib index namename for the row given by
        index.  Returns an empty string.pathName windowpath
        cellIndexcellIndex, created with the -window option of the cellconfigure subcommand.  If no
        window is currently embedded into the cell then the return value is an
        empty string.pathName xview
        argspathName xview0 and 1; together
            they describe the horizontal span that is visible in the
            window.  For example, if the first element is .2
            and the second element is .6, 20% of the tablelist's
            scrollable text is off-screen to the left, the middle 40% is
            visible in the window, and 40% of the scrollable text is off-screen
            to the right.  These are the same values passed to scrollbars
            via the -xscrollcommand option.pathName xview units-titlecolumns option is positive
            then this command adjusts the view in the window so that the column
            whose offset from the end of the title column area equals
            units non-hidden columns is displayed next to
            the title columns.  Otherwise the command adjusts the view in
            the window so that the character position given by
            units is displayed at the left edge of the
            window.  Character positions are defined by the width of the
            character 0.pathName xview moveto
            fractionfraction of the total width of the scrollable
            tablelist text is off-screen to the left. 
            fraction must be a fraction between
            0 and 1.pathName xview scroll number
            whatnumber and
            what.  number must be
            an integer.  what must be either
            units or pages or an
            abbreviation of one of these.  If what is
            units, the view adjusts left or right by
            number non-hidden columns or character units
            (the width of the 0 character) on the display,
            depending on the value of the -titlecolumns option; if
            what is pages then the view
            adjusts by number screenfuls.  If
            number is negative then columns or characters
            farther to the left become visible; if it is positive then columns
            or characters farther to the right become visible.pathName yview
        argspathName yview0 and 1.  The
            first element gives the position of the non-hidden tablelist item
            at the top of the window, relative to the tablelist as a whole
            (0.5 means it is halfway through the tablelist, for
            example).  The second element gives the position of the
            non-hidden tablelist item just after the last one in the window,
            relative to the tablelist as a whole.  These are the same
            values passed to scrollbars via the
            -yscrollcommand option.pathName yview unitsunits non-hidden rows is displayed at
            the top of the window.pathName yview moveto
            fractionfraction appears at the top of the
            window.  fraction is a fraction between
            0 and 1; 0 indicates the
            first non-hidden item in the tablelist, 0.33 indicates
            the non-hidden item one-third the way through the tablelist, and so
            on.pathName yview scroll number
            whatnumber and what. 
            number must be an integer. 
            what must be either units
            or pages or an abbreviation of one of
            these.  If what is
            units, the view adjusts up or down by
            number non-hidden rows; if it is
            pages then the view adjusts by
            number screenfuls.  If
            number is negative then earlier items become
            visible; if it is positive then later items become visible.Text is replaced with a new binding tag
      called TablelistBody.  The latter has all the
      events of the Listbox widget class, and several of
      its binding scripts are obtained from those of
      Listbox by replacing the event fields
      %W, %x, and
      %y with the path name of the tablelist widget and the
      x and y coordinates relative to the latter.  These values are
      assigned to the help variables tablelist::W,
      tablelist::x, and tablelist::y by
      invoking the helper command tablelist::convEventFields
      as follows:
      
        
foreach {tablelist::W tablelist::x tablelist::y} \
    [tablelist::convEventFields %W %x %y] {}
      
      This conversion of the event fields is necessary because the Tcl
      command associated with a tablelist expects any coordinates relative to
      the widget itself, not its body component.  It makes use of help
      variables from the tablelist namespace in order to
      avoid any conflicts with global variables.
Several of the events have no %x and
      %y fields; in this case another helper command
      tablelist::getTablelistPath
      is used to set the help variable tablelist::W to the
      path name of the tablelist widget:
set tablelist::W [tablelist::getTablelistPath %W]
The binding tag TablelistBody replaces the class
      name (Frame or TSeparator) of the
      separator widgets, too.  It also replaces the binding tag
      Message of the message widgets used to display
      multi-line elements, as well as the binding tag Label
      of the label widgets used to display embedded images.  This makes
      sure that the default handling of the mouse events on the column
      separators, multi-line cells, and embedded images is the same as in the
      rest of the tablelist's body.
When defining individual bindings for tablelist widgets, the same
      conversion of the event fields is needed as for the default
      bindings.  For example, the binding script below for the tablelist
      widget .tbl prints the index of the cell where mouse button
      1 was clicked:
        
bind [.tbl bodytag] <Button-1> {
    foreach {tablelist::W tablelist::x tablelist::y} \
        [tablelist::convEventFields %W %x %y] {}
    puts "clicked on cell [.tbl containingcell $tablelist::x $tablelist::y]"
}
      
      By associating the script with the binding tag returned by the
      bodytag subcommand instead of
      just with the path name of the tablelist's body we make sure to have the
      same event handling for the separators, multi-line cells, and embedded
      images as for the rest of the tablelist's body.
The bindings associated with the binding tag
      TablelistBody, created automatically by the
      tablelist::tablelist command, ensure that the body
      component of a tablelist has the same default behavior as a listbox
      widget.  If the selection type is row (which is
      the default) then everything described in the "DEFAULT BINDINGS" section
      of the listbox manual entry applies to the body component of a
      tablelist, too.  The only difference is that the word "element" in
      that manual page has to be replaced with "item" when applying the
      description to the body of a tablelist widget.
If the selection type is cell then everything
      described in the "DEFAULT BINDINGS" section of the listbox manual
      entry applies to the body component of a tablelist, too, with the
      following extensions and changes:
Tab or Shift-Tab is pressed, the
        location cursor (active element) moves to the next/previous
        element.  If the selection mode is browse or
        extended then the new active element is also
        selected and all other elements are deselected.  In
        extended mode the new active element becomes the
        selection anchor.  Notice that these bindings replace the common
        inter-widget navigation via Tab and Shift-Tab
        with inter-cell navigation.  Just like in the case of the text
        widget, Control-Tab and Control-Shift-Tab are
        intended to be used for widget-to-widget keyboard navigation. 
        Unfortunately, this won't always work because some window managers
        intercept the latter key sequences and use them for their own purposes
        (like inter-workplace navigation).  For this reason, Tablelist
        supports the additional key sequences Meta-Tab and
        Meta-Shift-Tab as replacements for
        Control-Tab and Control-Shift-Tab,
        respectively.Left or Right key is pressed, the
        location cursor (active element) moves to the previous/next element of
        the active row.  If the selection mode is
        browse or extended then the new
        active element is also selected and all other elements are
        deselected.  In extended mode the new active
        element becomes the selection anchor.extended mode, Shift-Left and
        Shift-Right move the location cursor (active element) to
        the previous/next element of the active row and also extend the
        selection to that element in a fashion similar to dragging with mouse
        button 1.Home or End key is pressed, the
        location cursor (active element) moves to the first/last element of the
        active row, the new active element is selected, and all other elements
        are deselected.extended mode, Shift-Home and
        Shift-End extend the selection to the first/last element
        of the active row.  In multiple mode,
        Shift-Home and Shift-End move the location
        cursor to the first/last element of the active row.Return and KP_Enter start the interactive
        editing of the active element.Just like in the case of the listbox widget, any changes to the
      selection will automatically generate the virtual event
      <<ListboxSelect>>.  Instead of this
      event (which is supported for compatibility reasons), the virtual event
      <<TablelistSelect>> can be used to be
      made aware of any changes to tablelist selection.  Both events will
      be generated independently of the selection type.
The following binding associated with the binding tag
      TablelistBody is only valid if the selection mode is
      single or multiple:  If
      mouse button 1 is clicked on an item and then dragged outside that item,
      and the value of the -movablerows configuration option is true,
      then the mouse cursor takes on the shape specified by the
      -movecursor option,
      indicating that the item in question is being moved to another position,
      visualized with the aid of a gap placed before the target item. 
      This operation ends when mouse button 1 is released, and can be canceled
      by pressing the Escape key.  In both cases, the mouse
      cursor is reset to its original value, specified by the
      -cursor configuration option.  After releasing
      mouse button 1, the source item is moved before the one indicated by the
      gap mentioned above and the virtual event
      <<TablelistRowMoved>> is generated.
tablelist::tablelist command automatically
      creates the following bindings for the header labels:-resizablecolumns
        configuration option and that of the -resizable option for the column
        corresponding to that label are true, then the mouse cursor takes on
        the shape specified by the -resizecursor option.  By clicking
        mouse button 1 in this area and moving the mouse while its button 1 is
        down, the column corresponding to that label will be resized by the
        amount of the cursor motion.  The interactive column resizing ends
        when mouse button 1 is released, and can be canceled by pressing the
        Escape key.  In both cases, the mouse cursor is reset
        to its original value, specified by the -cursor
        configuration option.  When the column resize operation is
        finished, the virtual event
        <<TablelistColumnResized>> is
        generated.-movablecolumns configuration option
        is true, then the mouse cursor takes on the shape specified by the
        -movecolumncursor
        option, indicating that the column in question is being moved to
        another position, visualized with the aid of a gap placed before the
        label of the target column.  This operation ends when mouse button
        1 is released, and can be canceled by pressing the Escape
        key when the mouse pointer is outside the label.  In both cases,
        the mouse cursor is reset to its original value, specified by the
        -cursor configuration option.  After releasing
        mouse button 1, the source column is moved before the one indicated by
        the gap mentioned above and the virtual event
        <<TablelistColumnMoved>> is
        generated.-labelcommand option is a nonempty
        string, then this command is concatenated with the name of the
        tablelist widget and the column index of the respective label, and the
        resulting script is evaluated in the global scope.  If another
        nonempty label command was specified at column level by using the
        columnconfigure
        option of the Tcl command associated with the tablelist widget, then
        that column-specific command will be used instead of the global
        one.  If mouse button 1 was pressed together with the
        Shift key then the widget- or column-specific command
        mentioned above will be replaced with the one specified by the
        -labelcommand2 option
        at widget or column level.<<Button3>> as
        <Button-3> for all windowing systems and
        additionally as <Control-Button-1> for Mac OS
        Classic and Mac OS X Aqua.  If this event occurs over a header
        label and both the value of the -resizablecolumns configuration
        option and that of the -resizable option for the column
        corresponding to that label are true, then the width of that column is
        set to zero, i.e., it is made just large enough to hold all the
        elements in the column, including the header (but no larger than the
        maximum width indicated by the -maxwidth column configuration option),
        and the virtual event
        <<TablelistColumnResized>> is
        generated.  The same action is triggered by double-clicking the
        resize area of a header label.<<ShiftButton3>> as
        <Shift-Button-3> for all windowing systems
        and additionally as <Shift-Control-Button-1>
        for Mac OS Classic and Mac OS X Aqua.  If this event occurs over a
        header label and both the value of the -resizablecolumns configuration
        option and that of the -resizable option for the column
        corresponding to that label are true, then the width of that column is
        set to its last static width (if any) and the virtual event
        <<TablelistColumnResized>> is
        generated.  The same action is triggered by double-clicking the
        resize area of a header label with the Shift key held
        down.If the tablelist's state is
      disabled then none of the above actions occur: the
      labels are completely insensitive.
tablelist::tablelist command extends and
      partially redefines the bindings of some of the components of the
      temporary embedded widget used for interactive cell editing, which is
      started by clicking mouse button 1 in an editable cell or using keyboard
      navigation to move from one editable cell into another.  If the
      selection type is cell and the location cursor is in
      an editable cell, then the interactive editing of the active element can
      also be started by pressing Return or KP_Enter.
      The affected components of the temporary embedded widget depend on the
      edit window: the widget itself in case of a Tk or tile checkbutton; the
      edit window's entry children in case of a mentry widget; the only entry
      or entry-like component of the edit window in all other cases (see also
      the entrypath
      subcommand).  The list of binding tags of these edit window
      components contains two addditional tags, inserted just before their path
      names: the binding tag whose name is returned by the editwintag subcommand, followed by the tag
      TablelistEdit.  The bindings described below are
      associated with the tag TablelistEdit, and can be
      overridden for individual tablelist widgets by making use of the binding
      tag given by the editwintag
      subcommand.
Control-i inserts a tabulator character into the edit
        window's entry or entry-like components (if any), at the point of the
        insertion cursor.Control-j inserts a newline character into the edit
        window's entry or entry-like components (if any), at the point of the
        insertion cursor.Return and
        KP_Enter insert a newline character at the point of the
        insertion cursor.  Otherwise they terminate the editing and
        destroy the edit window.Control-Return and Control-KP_Enter
        terminate the editing and destroy the edit window.Escape aborts the editing and destroys the edit
        window.Tab and Shift-Tab terminate
        the editing in the current cell, move the edit window into the
        next/previous editable cell of the tablelist, select the contents of
        the edit window's first entry or entry-like component (if any), and set
        the insertion cursor to its end.  If the new edit window is a text
        widget then its contents are left unselected.  Notice that these
        bindings replace the common inter-widget navigation via
        Tab and Shift-Tab with inter-cell
        navigation.  Just like in the case of the text widget,
        Control-Tab and Control-Shift-Tab are
        intended to be used for widget-to-widget keyboard navigation during
        interactive cell editing.  Unfortunately, this won't always work
        because some window managers intercept the latter key sequences and use
        them for their own purposes (like inter-workplace navigation). 
        For this reason, Tablelist supports the additional key sequences
        Meta-Tab and Meta-Shift-Tab as replacements
        for Control-Tab and Control-Shift-Tab,
        respectively.Alt-Left/Alt-Right
        (Command-Left/Command-Right on Mac OS Classic
        and Mac OS X Aqua) terminates the editing in the current cell, moves
        the edit window into the previous/next editable cell of the row,
        selects the contents of the edit window's first entry or entry-like
        component (if any), and sets the insertion cursor to its end.  If
        the new edit window is a text widget then its contents are left
        unselected.  The key sequence
        Meta-Left/Meta-Right has the same effect as
        Alt-Left/Alt-Right.  If
        tk_strictMotif is false and the edit window is not
        a text widget then Meta-b and Meta-f behave
        the same as Alt-Left and Alt-Right,
        respectively.  If the edit window is a Tk or tile checkbutton
        widget then Left/Right has the same effect as
        Alt-Left/Alt-Right.Alt-Up/Alt-Down
        (Command-Up/Command-Down on Mac OS Classic
        and Mac OS X Aqua) terminates the editing in the current cell, moves
        the edit window one line up/down within the column, selects the
        contents of the edit window's first entry or entry-like component (if
        any), and sets the insertion cursor to its end.  If the new edit
        window is a text widget then its contents are left unselected. 
        The key sequence Meta-Up/Meta-Down has the
        same effect as Alt-Up/Alt-Down.  If
        tk_strictMotif is false and the edit window is not
        a text widget or an Iwidgets combobox, then Control-p and
        Control-n behave the same as Alt-Up and
        Alt-Down, respectively.  If the edit window is a Tk
        or tile entry, Tk or tile checkbutton, BWidget Entry, Iwidgets
        entryfield/spinner/spinint, or a mentry widget of type
        "FixedPoint", then Up/Down has
        the same effect as Alt-Up/Alt-Down.Alt-Prior/Alt-Next
        (Command-Prior/Command-Next on Mac OS Classic
        and Mac OS X Aqua) terminates the editing in the current cell, moves
        the edit window up/down by one page within the column, selects the
        contents of the edit window's first entry or entry-like component (if
        any), and sets the insertion cursor to its end.  If the new edit
        window is a text widget then its contents are left unselected. 
        The key sequence Meta-Prior/Meta-Next has the
        same effect as Alt-Prior/Alt-Next.  If
        the edit window is not a text widget, BWidget SpinBox, Oakley combobox,
        or a mentry widget of type "Date", "Time",
        "DateTime", or "IPAddr", then
        Prior/Next has the same effect as
        Alt-Prior/Alt-Next.Alt-Home/Alt-End
        (Command-Home/Command-End on Mac OS Classic
        and Mac OS X Aqua) terminates the editing in the current cell, moves
        the edit window into the first/last editable cell of the tablelist,
        selects the contents of the edit window's first entry or entry-like
        component (if any), and sets the insertion cursor to its end.  If
        the new edit window is a text widget then its contents are left
        unselected.  The key sequence
        Meta-Home/Meta-End has the same effect as
        Alt-Home/Alt-End.  If
        tk_strictMotif is false and the edit window is not
        a text widget then Meta-< and Meta->
        behave the same as Alt-Home and Alt-End,
        respectively.  If the edit window is not a text widget then
        Control-Home/Control-End has the same effect
        as Alt-Home/Alt-End.Before moving the edit window, the key sequences mentioned under 7 -
      11 move the active item or element and change the (cell)selection and the
      (cell)selection anchor in the body of the tablelist widget.  For
      example, if Alt-Up/Alt-Down or
      Meta-Up/Meta-Down
      (Command-Up/Command-Down on Mac OS Classic and
      Mac OS X Aqua) is pressed when editing a cell that is not the first/last
      editable cell within its column, then the active item or element
      (depending on the selection type) moves one line up/down.  If the
      selection mode is browse or
      extended then the new active item or element is also
      selected and all other items or elements are deselected.  In
      extended mode the new active item or element becomes
      the (cell)selection anchor.  This is exactly the same behavior as
      the one exhibited by the Up and Down keys in
      the tablelist's body.
If the tablelist's state is
      disabled then none of the above actions occur.