The tablelist::tablelist Command

by

Csaba Nemethi

csaba.nemethi@t-online.de


Contents

Start page


Quick Reference

NAME
tablelist::tablelist - Create and manipulate tablelist widgets

SYNOPSIS
tablelist::tablelist pathName ?options?

STANDARD OPTIONS
-borderwidth          -highlightthickness  -setgrid
-cursor               -relief              -xscrollcommand
-exportselection      -selectbackground    -yscrollcommand
-highlightbackground  -selectborderwidth
-highlightcolor       -selectforeground

OPTIONS FOR THE BODY COMPONENT OF THE WIDGET
-background  -disabledforeground  -font  -foreground

WIDGET-SPECIFIC OPTIONS
-activestyle frame|none|underline
-arrowcolor color
-arrowdisabledcolor color
-columns {width title ?left|right|center? \
?width title ?left|right|center? ...?}
-editendcommand command
-editstartcommand command
-forceeditendcommand boolean
-height lines
-incrarrowtype up|down
-labelbackground color  or  -labelbg color
-labelborderwidth pixels  or  -labelbd pixels
-labelcommand command
-labeldisabledforeground color
-labelfont font
-labelforeground color  or  -labelfg color
-labelheight lines
-labelpady pixels
-labelrelief raised|sunken|flat|ridge|solid|groove
-listvariable variable
-movablecolumns boolean
-movablerows boolean
-movecolumncursor cursor
-movecursor cursor
-resizablecolumns boolean
-resizecursor cursor
-selectmode mode (single|browse|multiple|extended)
-selecttype row|cell
-showarrow boolean
-showlabels boolean
-showseparators boolean
-snipstring string
-sortcommand command
-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
-width characters

DESCRIPTION

COLORS AND FONTS

COLUMN CONFIGURATION OPTIONS
-align left|right|center
-background color  or  -bg color
-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 pixels  or  -labelbd pixels
-labelcommand command
-labelfont font
-labelforeground color  or  -labelfg color
-labelheight lines
-labelimage image
-labelpady pixels
-labelrelief raised|sunken|flat|ridge|solid|groove
-maxwidth width
-name name
-resizable boolean
-selectbackground color
-selectforeground color
-showarrow boolean
-sortcommand command
-sortmode ascii|command|dictionary|integer|real
-text list
-title title
-width width

ROW CONFIGURATION OPTIONS
-background color  or  -bg color
-font font
-foreground color  or  -fg color
-selectable boolean
-selectbackground color
-selectforeground color
-text list

CELL CONFIGURATION OPTIONS
-background color  or  -bg color
-editable boolean
-font font
-foreground color  or  -fg color
-image image
-window command
-selectbackground color
-selectforeground color
-text text

INTERACTIVE CELL EDITING

ROW INDICES
number  knumber  active  anchor  end  @x,y

COLUMN INDICES
number  active  anchor  end  @x,y  name

CELL INDICES
row,col  active  anchor  end  @x,y
   row : number  knumber  active  anchor  end
   col : number  active  anchor  end  name

WIDGET COMMAND
pathName activate index
pathName activatecell cellIndex
pathName attrib ?name? ?value name value ...?
pathName bbox index
pathName bodypath
pathName bodytag
pathName cancelediting
pathName cellcget cellIndex option
pathName cellconfigure cellIndex ?option? ?value option value ...?
pathName cellindex cellIndex
pathName cellselection option args
pathName cellselection anchor cellIndex
pathName cellselection clear firstCell lastCell
pathName cellselection clear cellIndexList
pathName cellselection includes cellIndex
pathName cellselection set firstCell lastCell
pathName cellselection set cellIndexList
pathName cget option
pathName columncget columnIndex option
pathName columnconfigure columnIndex ?option? ?value option value ...?
pathName columncount
pathName columnindex columnIndex
pathName configure ?option? ?value option value ...?
pathName containing y
pathName containingcell x y
pathName containingcolumn x
pathName curcellselection
pathName curselection
pathName delete first last
pathName delete indexList
pathName deletecolumns firstColumn lastColumn
pathName deletecolumns columnIndexList
pathName editcell cellIndex
pathName editwinpath
pathName entrypath
pathName fillcolumn columnIndex text
pathName finishediting
pathName get first last
pathName get indexList
pathName getcells firstCell lastCell
pathName getcells cellIndexList
pathName getcolumns firstColumn lastColumn
pathName getcolumns columnIndexList
pathName getkeys first last
pathName getkeys indexList
pathName index index
pathName 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 itemList
pathName itemlistvar
pathName labelpath columnIndex
pathName labels
pathName move source target
pathName movecolumn sourceColumn targetColumn
pathName nearest y
pathName nearestcell x y
pathName nearestcolumn x
pathName rejectinput
pathName resetsortinfo
pathName rowcget index option
pathName rowconfigure index ?option? ?value option value ...?
pathName scan mark|dragto x y
pathName see index
pathName seecell cellIndex
pathName seecolumn columnIndex
pathName selection option args
pathName selection anchor index
pathName selection clear first last
pathName selection clear indexList
pathName selection includes index
pathName selection set first last
pathName selection set indexList
pathName separatorpath ?columnIndex?
pathName separators
pathName size
pathName sort ?-increasing|-decreasing?
pathName sortbycolumn columnIndex ?-increasing|-decreasing?
pathName sortcolumn
pathName sortorder
pathName windowpath cellIndex
pathName xview args
pathName xview
pathName xview units
pathName xview moveto fraction
pathName xview scroll number what
pathName yview args
pathName yview
pathName yview index
pathName yview moveto fraction
pathName yview scroll number what

DEFAULT AND INDIVIDUAL BINDINGS FOR THE TABLELIST BODY

DEFAULT BINDINGS FOR THE HEADER LABELS

DEFAULT BINDINGS FOR INTERACTIVE CELL EDITING

KEYWORDS
tablelist, multi-column, listbox, widget

Contents     Start page


Detailed Reference

NAME
tablelist::tablelist - Create and manipulate tablelist widgets

SYNOPSIS
tablelist::tablelist pathName ?options?

STANDARD OPTIONS
-borderwidth          -highlightthickness  -setgrid
-cursor               -relief              -xscrollcommand
-exportselection      -selectbackground    -yscrollcommand
-highlightbackground  -selectborderwidth
-highlightcolor       -selectforeground

See the options manual entry for details on the standard options.

OPTIONS FOR THE BODY COMPONENT OF THE WIDGET
-background  -disabledforeground  -font  -foreground

These options (described in the options manual entry) are only valid for the body component of the tablelist widget.  As discussed in the next section, the colors and font used when drawing the header labels can be different from those specified for the body.

WIDGET-SPECIFIC OPTIONS

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 -selecttype configuration option) when the tablelist has the keyboard focus.  The allowed values are frame, none, and underline.  The value frame makes the active item or element appear surrounded with a thin frame, which looks nice when applied to the active element, and also when displaying the active item if all of its cells have the same background color.  It looks less pretty when applied to the active item if the background color of some of its cells was changed by using the columnconfigure or cellconfigure widget command.  The value none specifies that no special indication of the active item or element is to be performed.  The default is underline, which produces the same visual effect as in the case of the core Tk 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 sortbycolumn subcommand of the Tcl command associated with the widget.  This option is only relevant if the value of the -showarrow option is true.  The default value 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).

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 sortbycolumn subcommand of the Tcl command associated with the widget when the tablelist's state is disabled.  This option is only relevant if the value of the -showarrow option is true.  The default value 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).

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 width 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).  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 title specifies the text to be displayed in the column's header, and may optionally be followed in the next list element by an alignment, which specifies how to align the elements of the column.  Each alignment must be one of left, right, or center.  The default is left.  The alignment also refers to the column's title as long as the -labelalign option 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.

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 -forceeditendcommand option 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 -editendcommand option.  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 is 0, 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 the finishediting and cancelediting subcommands, 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.

Command-Line Name:  -incrarrowtype
Database Name:  incrArrowType
Database Class:  IncrArrowType

Specifies the type of the arrow placed into a column label when invoking the sortbycolumn subcommand of the Tcl command associated with the widget, with -increasing as second argument.  The value of this option must be one of up or down.  The default is up.  This option is only relevant if the value of the -showarrow option is true.

Command-Line Name:  -labelbackground or -labelbg
Database Name:  labelBackground
Database Class:  Background

Specifies the -background option for the header labels.

Command-Line Name:  -labelborderwidth or -labelbd
Database Name:  labelBorderWidth
Database Class:  BorderWidth

Specifies the -borderwidth option for the header labels.  This option is different from the standard -borderwidth option defined for the tablelist widget itself.

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's state is disabled then this action will not take place.  The most common value of this option is tablelist::sortByColumn; this command sorts the items based on the column whose index was passed to it as second argument.

Command-Line Name:  -labeldisabledforeground
Database Name:  labelDisabledForeground
Database Class:  DisabledForeground

Specifies the -disabledforeground option for the header labels, i.e., the foreground color to use for the labels when the tablelist's state is disabled.  This option is only defined if the Tk version being used supports the -state and -disabledforeground options for label widgets.  This is checked by the Tablelist package at initialization time, and will normally be the case for Tk versions 8.3.1 or higher.

Command-Line Name:  -labelfont
Database Name:  labelFont
Database Class:  Font

Specifies the -font option for the header labels.

Command-Line Name:  -labelforeground or -labelfg
Database Name:  labelForeground
Database Class:  Foreground

Specifies the -foreground option for the header labels.

Command-Line Name:  -labelheight
Database Name:  labelHeight
Database Class:  Height

Specifies the -height option for the header labels.

Command-Line Name:  -labelpady
Database Name:  labelPadY
Database Class:  Pad

Specifies the -pady option for the header labels.

Command-Line Name:  -labelrelief
Database Name:  labelRelief
Database Class:  Relief

Specifies the -relief option for the header labels.  This option is different from the standard -relief option defined for the tablelist widget itself.

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 -listvariable will cause an error.  Attempts to unset a variable in use as a -listvariable will fail but will not generate an error.

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:  -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, or extended.  The default value is browse.

Command-Line Name:  -selecttype
Database Name:  selectType
Database Class:  SelectType

Specifies one of two selection types for the tablelist widget: row or cell.  If the selection type is row then 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 is cell then 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 is row.

Command-Line Name:  -showarrow
Database Name:  showArrow
Database Class:  ShowArrow

Specifies a boolean value that determines whether the sortbycolumn subcommand of the Tcl command associated with the widget should place an arrow indicating the sorting order into the header label of the column specified by its first argument.  The default value is 1.

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 frame widgets with sunken relief, attached to the right edges of the header labels.  They 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 -stripebackground option 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 sort subcommand of the Tcl command associated with the tablelist widget.  To compare two items (viewed as lists of cell contents within one row each) during the sort operation, 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:  -state
Database Name:  state
Database Class:  State

Specifies one of two states for the tablelist widget: normal or disabled.  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 -arrowdisabledcolor color, respectively, the location of the active item or element and the selection cannot be modified and are not shown (although the corresponding information is retained), the header labels are completely insensitive, and no interactive cell editing can be performed.

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 all or 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 index end, 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 -width configuration option is zero or less.

Command-Line Name:  -stripebackground or -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 stripeHeight of consecutive items, according to the value of the -stripeheight configuration option.  The first stripeHeight items are "normal" ones; they are followed by a stripe composed of the next stripeHeight items, which in turn is followed by the same number of "normal" items, and so on.  The default value is an empty string, indicating that the stripes will inherit the background color specified by the -background configuration option.  The -stripebackground option has a higher priority than the -background column configuration option, but a lower priority than the -background option specified at row or cell level.

Command-Line Name:  -stripeforeground or -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 stripeHeight of consecutive items, according to the value of the -stripeheight configuration option.  The first stripeHeight items are "normal" ones; they are followed by a stripe composed of the next stripeHeight items, which in turn is followed by the same number of "normal" items, and so on.  The default value is an empty string, indicating that the stripes will inherit the foreground color specified by the -foreground configuration option.  The -stripeforeground option has a higher priority than the -foreground column configuration option, but a lower priority than the -foreground option 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 with 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 (Tab and Shift-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, or xview subcommand.  The default value is 0.  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 the 0 character).

The end of the title column area is visualized with the aid of a separator frame 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 -showseparators option.  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 -elide option for a text widget tag), this option is not supported for Tk versions earlier than 8.3.

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.

DESCRIPTION
The 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.

A tablelist is a multi-column listbox, implemented as a mega-widget, consisting of a body and a header.  The body displays a list of items, one per line.  Each item is a list of elements, which are aligned in columns.  In other words, an item is the contents of a row, and an element is the text contained in a cell.  The header consists of label widgets displaying the column titles.  The labels can be used, among others, for interactive column resizing and column-based sorting of the items, as described below.

Each cell and each header label of a tablelist widget can also contain an image, which is placed to the left or right of the text, depending on the column's alignment.  Instead of an image, a tablelist cell can also contain an embedded window, placed to the left or right of the text, just like an embedded image.

The elements of a tablelist widget can, per default, be only edited programmatically.  However, interactive editing can be enabled for individual cells and for entire columns.  Per default, the interactive cell editing uses a temporary embedded entry widget, thus making sure that all the validation facilities available for entry widgets can be used during the editing process.  A great variety of widgets from the packages BWidget, Iwidgets, combobox (by Bryan Oakley), and Mentry, as well as spinbox and checkbutton widgets are also supported as temporary embedded widgets used for cell editing.  In addition, a rich set of keyboard bindings is provided for a comfortable navigation between the editable cells.

When first created, a new tablelist widget has no items.  Items may be added, deleted, or updated using widget commands described below.  In addition, one or more items or elements may be selected.  If a tablelist widget is exporting its selection (see the -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.

It is not necessary for all the elements to be displayed in the tablelist widget at once; commands described below may be used to change the view in the window.  Tablelist widgets allow scrolling in both directions using the standard -xscrollcommand and -yscrollcommand options.  They also support scanning, as described below.

Each tablelist widget may have any number of attributes, which can be used in commands that create or manipulate tablelist widgets for particular purposes.

COLORS AND FONTS
The -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.

COLUMN CONFIGURATION OPTIONS
The following options are currently supported by the columncget and columnconfigure commands:

-align alignment
Specifies how to align the elements of the column.  It must be one of left, 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
Specifies the normal background color to use when displaying the contents of the column.

-editable boolean
Specifies whether the elements of the column can be edited interactively.  The default value is 0.  The value of this option can be overridden for individual cells by using the cell configuration option with the same name.

-editwindow name
Specifies the type of the temporary embedded widget to be used for interactive editing of the contents of the given column's cells.  name may be one of entry, spinbox (for Tk version 8.4 or higher), or checkbutton, or the value returned by one of the registration commands for widgets from the packages BWidget, Iwidgets, combobox (by Bryan Oakley), and Mentry.  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.

-font font
Specifies the font to use when displaying the contents of the column.

-foreground color or -fg color
Specifies the normal foreground color to use when displaying the contents of the column.

-formatcommand command
Specifies the Tcl command to be invoked when displaying the contents of a cell within this column or adding them to the selection when the latter is being exported.  If command 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, cellcget, sort, and sortbycolumn 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.

-hide boolean
Specifies whether to hide the column when displaying the widget or exporting its selection.  The default value is 0.

-labelalign alignment
Specifies how to align the column's title.  It must be one of left, 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 pixels or -labelbd pixels
-labelcommand command
-labelfont fontName
-labelforeground color or -labelfg color
-labelheight lines
-labelpady pixels
-labelrelief relief
The value of each of these options may also be an empty string.  These options are the column-specific equivalents of the global ones having the same names, described in the WIDGET-SPECIFIC OPTIONS section.  They override the options with the same names set at widget level if the specified value is not empty.  If one of these options hasn't been specified for the given column, or if its value is an empty string, then that option will not be used at column level; the global option with the same name will be used instead.  The -labeldisabledforeground option is only defined at widget level; there is no column configuration option with this name.

-labelimage image
Specifies the name of the Tk image to be displayed in the header label.  image 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 width
width 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 name
Specifies a name associated with the column.  While the numerical index of a column might change by inserting, deleting, or moving columns, its name remains constant and can be used as a safe alternative column index (see the COLUMN INDICES section for details).  Similarly, it can also be used as the second component of a cell index of the form row,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 boolean
Specifies whether the column can be resized interactively.  See the DEFAULT BINDINGS FOR THE HEADER LABELS section for information on interactive column resizing.  The default value is 1.  This option is only relevant if the value of the -resizablecolumns widget configuration option is true.

-selectbackground color
Specifies the background color to use when displaying the contents of a cell in the given column while the cell is selected.

-selectforeground color
Specifies the foreground color to use when displaying the contents of a cell in the given column while the cell is selected.

-showarrow boolean
Specifies whether the sortbycolumn command with the given column index as first argument should place an arrow indicating the sorting 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.

-sortcommand command
This option is only relevant if the value of the -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.  To compare two elements during the sortbycolumn 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 mode
Specifies how to compare the column's elements when invoking the sortbycolumn command with the given column index as 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 -sortcommand column 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, bigBoy sorts between bigbang and bigboy, and x10y sorts between x9y and x11y.
 
integer Convert the elements to integers and use integer comparison.
 
real Convert the elements to floating-point values and use floating-point comparison.

-text list
Specifies a list of strings to be displayed in the cells of the given column, i.e., updates the elements contained in the column.  If the tablelist's state is disabled then this option will be ignored.

-title title
Specifies the text to be displayed in the column's header.  This option is tied to the title 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 width
width 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.

The -background, -font, -foreground, -selectbackground, and -selectforeground column configuration options override the options with 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.

ROW CONFIGURATION OPTIONS
The following options are currently supported by the rowcget and rowconfigure commands:

-background color or -bg color
Specifies the normal background color to use when displaying the contents of the row.

-font font
Specifies the font to use when displaying the contents of the row.

-foreground color or -fg color
Specifies the normal foreground color to use when displaying the contents of the row.

-selectable boolean
Specifies whether the elements displayed in the given row can be selected.  The default value is 1.  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
Specifies the background color to use when displaying the contents of a cell in the given row while the cell is selected.

-selectforeground color
Specifies the foreground color to use when displaying the contents of a cell in the given row while the cell is selected.

-text list
Specifies a list of strings to be displayed in the cells of the given row, i.e., updates the item contained in the row.  If the tablelist's state is disabled then this option will be ignored.

The -background, -font, -foreground, -selectbackground, and -selectforeground row configuration options override the options with 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.

CELL CONFIGURATION OPTIONS
The following options are currently supported by the cellcget and cellconfigure commands:

-background color or -bg color
Specifies the normal background color to use when displaying the contents of the cell.

-editable boolean
Specifies whether the contents of the cell can be edited interactively.  The default value is 0.  This option overrides the one with the same name for the column containing the given cell.

-font font
Specifies the font to use when displaying the contents of the cell.

-foreground color or -fg color
Specifies the normal foreground color to use when displaying the contents of the cell.

-image image
Specifies the name of the Tk image to be displayed in the cell.  image 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 space character.  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.  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 or left side, depending on the column's alignment.  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
Specifies the background color to use when displaying the contents of the cell while it is selected.

-selectforeground color
Specifies the foreground color to use when displaying the contents of the cell while it is selected.

-text text
Specifies the string to be displayed in the given cell, i.e., updates the element contained in the cell.  If the tablelist's state is disabled then this option will be ignored.

-window command
Specifies a Tcl command creating the window to be embedded into the cell.  The command is automatically concatenated with the name of the tablelist widget, the cell's row and column indices, as well as the path name of the embedded window to be created, and the resulting script is evaluated in the global scope.  command 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 space character.  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.

The -background, -font, -foreground, -selectbackground, and -selectforeground cell configuration options override the options with 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.

INTERACTIVE CELL EDITING
Whether or not the contents of a cell of a tablelist widget can be edited interactively, depends on the -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.

The interactive cell editing is started by the 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 configuration option to specify another widget instead of an entry, like a Tk core spinbox or checkbutton, or one of the 16 currently supported widgets from the packages BWidget, Iwidgets, combobox (by Bryan Oakley), and Mentry.  Before specifying a widget from one of these library packages as the value of the -editwindow column configuration option, you must register it for interactive cell editing by invoking the corresponding tablelist::add* command.  The Tk core entry, spinbox, and checkbutton widgets are automatically registered for cell editing.

In the simplest case, the text automatically inserted into the temporary embedded widget is the same as the text displayed in the cell, which in turn can be the cell's contents or the string obtained from the latter by using the -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, 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.)

The editing of the text inserted into the edit window uses the widget-specific bindings for mouse and keyboard events, with a few extensions and changes, as described in the DEFAULT BINDINGS FOR INTERACTIVE CELL EDITING section.  For example, in entry or entry-like components of the embedded widget, Control-i inserts a tab, while Control-j, Control-Return, and Control-KP_Enter insert a newline.  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, Control-Home, and Control-End.  The editing can be aborted with the Escape key (or by invoking the cancelediting subcommand) and terminated normally with Return or KP_Enter (the bindigs for these keys just invoke the finishediting subcommand).  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.

When normal termination of the editing process occurs, the Tcl command associated with the tablelist widget compares the edit window's final contents to its original one.  If they are equal then the embedded widget is destroyed and the cell's original value is restored.  If the two strings are different and the value of the -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.

ROW INDICES
Many of the widget commands for tablelist widgets take one or more row indices as arguments.  A row index specifies a particular item of the tablelist, in any of the following ways:

number Specifies the item as a numerical index, where 0 corresponds to the first item in the tablelist.
 
knumber Specifies the item by its full key, composed of the letter k and the sequence number associated with the item, as returned by the getkeys widget 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 -activestyle configuration option when the tablelist has the keyboard focus.  This item is specified with the activate widget command or as the row containing the element specified with the activatecell widget command.
 
anchor Indicates the anchor point for the row selection, which is set with the  selection anchor  widget command, or the row containing the anchor point for the cell selection, which is set with the  cellselection anchor  widget 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, and insertlist, as well as for the target of the move command 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 x and y (in pixel coordinates).  If no item covers that point, then the closest item to that point is used.  The coordinates x and y are expected to be relative to the tablelist window itself (not its body component).

In the widget command descriptions below, arguments named index, first, and last always contain row indices in one of the above forms.

COLUMN INDICES
Some of the widget commands for tablelist widgets take a column index as argument.  A column index specifies a particular column of the tablelist, in any of the following ways:

number Specifies the column as a numerical index, where 0 corresponds to the first column in the tablelist.
 
active Indicates the column containing the element that has the location cursor.  If the selection type is cell then this element will be displayed according to the value of the -activestyle configuration option when the tablelist has the keyboard focus.  This element is specified with the activatecell widget command.
 
anchor Indicates the column containing the anchor point for the cell selection, which is set with the  cellselection anchor  widget command.
 
end Indicates the last column of the tablelist, except for the commands insertcolumns and insertcolumnlist, as well as for the target of the movecolumn command, 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 x and y (in pixel coordinates).  If no column covers that point, then the closest column to that point is used.  The coordinates x and y are expected to be relative to the tablelist window itself (not its body component).
 
name Specifies the column by the value of its -name configuration option.  name must 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).

CELL INDICES
Some of the widget commands for tablelist widgets take a cell index as argument.  A cell index specifies a particular cell of the tablelist, in any of the following ways:

row,col Indicates the cell having the row index row and column index colrow may be a number, a full key (of the form knumber), active, anchor, or end (where the latter indicates the last row in the tablelist).  col may be a number, active, anchor, end, or a column name.
 
active Indicates the element that has the location cursor.  If the selection type is cell then this element will be displayed according to the value of the -activestyle configuration option when the tablelist has the keyboard focus.  This element is specified with the activatecell widget command.
 
anchor Indicates the anchor point for the cell selection, which is set with the  cellselection anchor  widget 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 x and y (in pixel coordinates).  If no cell covers that point, then the closest cell to that point is used.  The coordinates x and y are expected to be relative to the tablelist window itself (not its body component).

WIDGET COMMAND
The 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 index
Sets the active item to the one indicated by index if the tablelist's state is not disabled.  If index is outside the range of items in the tablelist then the closest 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 cellIndex
Sets the active element to the one indicated by cellIndex 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 ...?
Queries or modifies the attributes of the widget.  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 pathName.  If name is specified with no value, then the command returns the value of the one named attribute.  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 index
Returns a list of four numbers describing the bounding box of the row given by index.  The first two elements of the list give the x and y coordinates of the upper-left corner of the screen area covered by the row (specified in pixels relative to the widget) and the last two elements give the width and height of the area, in pixels.  If no part of the row given by index is visible on the screen, or if index refers to a non-existent row, then the result is an empty string; if the row is partially visible, the result gives the full area of the row, including any parts that are not visible.

pathName bodypath
Returns the path name of the body component of the widget.

pathName bodytag
Returns the name of a binding tag whose name depends on the path name of the tablelist widget and which is associated with the tablelist's body, the separator frames, and the labels used for displaying embedded images.  This binding tag 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 and embedded images.  This binding tag precedes the tag TablelistBody in the list of binding tags of the tablelist descendants mentioned above.

pathName cancelediting
This subcommand cancels the interactive editing of the contents of the cell whose index was passed to the editcell 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 cellcget cellIndex option
Returns the current value of the cell configuration option given by option for the cell specified by cellIndexoption may have any of the values accepted by the cellconfigure command.

pathName cellconfigure cellIndex ?option? ?value option value ...?
Queries or modifies the configuration options of the cell given by 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 cellIndex
Returns the canonical cell index value that corresponds to cellIndex, in the form row,col, where row and col are integers.

pathName cellselection option args
This command is used to adjust the cell selection within a tablelist widget.  It has several forms, depending on option:

pathName cellselection anchor cellIndex
Sets the cell selection anchor to the element given by cellIndex.  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 lastCell
pathName cellselection clear cellIndexList
If any of the elements between firstCell 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 cellIndex
Returns 1 if the element indicated by cellIndex is currently selected, 0 if it isn't.

pathName cellselection set firstCell lastCell
pathName cellselection set cellIndexList
Selects all of the selectable elements in the range between firstCell 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.

If the tablelist's 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 option
Returns the current value of the configuration option given by option, which may have any of the values accepted by the tablelist::tablelist command.

pathName columncget columnIndex option
Returns the current value of the column configuration option given by option for the column specified by columnIndexoption may have any of the values accepted by the columnconfigure command.

pathName columnconfigure columnIndex ?option? ?value option value ...?
Queries or modifies the configuration options of the column given by 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 columncount
Returns the number of columns in the tablelist widget.

pathName columnindex columnIndex
Returns the integer column index value that corresponds to columnIndex.

pathName configure ?option? ?value option value ...?
Queries or modifies the configuration options of the widget.  If no 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
Given a y-coordinate within the tablelist window, this command returns the index of the tablelist item containing that y-coordinate.  If no corresponding item is found then the return value is -1.  The coordinate y is expected to be relative to the tablelist window itself (not its body component).

pathName containingcell x y
Given an x- and a y-coordinate within the tablelist window, this command returns the index of the tablelist cell containing the point having these coordinates.  If no corresponding cell is found then the row or column component (or both) of the return value is -1.  The coordinates x and y are expected to be relative to the tablelist window itself (not its body component).

pathName containingcolumn x
Given an x-coordinate within the tablelist window, this command returns the index of the tablelist column containing that x-coordinate.  If no corresponding column is found then the return value is -1.  The coordinate x is expected to be relative to the tablelist window itself (not its body component).

pathName curcellselection
Returns a list containing the canonical indices (of the form row,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 curselection
Returns a list containing the numerical indices of all of the items in the tablelist that contain at least one non-hidden selected element.  If there are no such items in the tablelist then an empty string is returned.

pathName delete first last
pathName delete indexList
Deletes one or more items of the tablelist if its state 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 lastColumn
pathName deletecolumns columnIndexList
Deletes one or more columns of the tablelist if its state 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 cellIndex
Starts the interactive editing of the cell's contents if the tablelist's state is not disabled, the cell's column is 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 editwinpath
Returns the path name of the temporary embedded widget used for interactive cell editing, created by the editcell 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 entrypath
Returns the path name of the entry or entry-like component of the temporary embedded widget used for interactive cell editing, created by the editcell subcommand.  If no cell is currently being edited or the editing is taking place with the aid of a checkbutton or mentry widget then the return value is an empty string; otherwise it is the path name of an entry, 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 text
Sets all the elements of the specified column to the value text.

pathName finishediting
This subcommand attempts to terminate the interactive editing of the contents of the cell whose index was passed to the editcell 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 th