Создание таблиц и действия с ними.

Виджет Tk Table разработан на базе виджета Tk3 table (Roland King, rols@lehman.com) и дает возможность создавать таблично-матричные объекты, является расширением Tcl/Tk и поддерживает:

  • встроенные окна (одно для каждой ячейки)
  • изменение ширины строк и столбцов (включая интерактивный режим)
  • заголовки для строк и столбцов
  • различные источники для таблиц
  • стандартную графику Tk
  • горизонтальные и вертикальные полосы прокрутки
  • выделение строки, столбца, ячейки
  • отображение режима "только чтение"
  • множественное выделение ячеек

Разработано Jeffrey Hobbs (jeff.hobbs@acm.org)

Виджет становится доступным для выполнения после загрузки библиотеки Tktable2.3 командой load

СИНТАКСИС

table имя виджета ? опции ? СТАНДАРТНЫЕ ОПЦИИ
   
-anchor  -background  -borderwidth 
-cursor -exportselection -font 
-foreground -highlightbackground -highlightcolor 
-highlightthickness -insertbackground -insertborderwidth
-insertofftime  -insertontime  -insertwidth
-invertselected  -padx -pady
-relief -takefocus -xscrollcommand
-yscrollcommand    
Детальное описание стандартных опций (см. "Опции). СПЕЦИАЛЬНЫЕ ОПЦИИ КОМАНДЫ Имя опции в Командной строке: -autoclear
Имя опции в Базе данных Х ресурсов: autoClear
Имя Класса в Базе данных Х ресурсов: AutoClear
Булева величина, которая определяет, будет ли по первому нажатию на клавишу удаляться из ячейки тот текст, который был прежде там. Значение по умолчанию - 0.
  Имя опции в Командной строке:-bordercursor
Имя опции в Базе данных Х ресурсов: borderCursor
Имя Класса в Базе данных Х ресурсов: Cursor


Определяет имя курсора, который появляется на границе поля и показывает, что размеры поля могут быть изменены интерактивно (определяется значением опции -resizeborders). По умолчанию - crosshair (перекрестье).

 
Имя опции в Командной строке:-browsecommand или -browsecmd
Имя опции в Базе данных Х ресурсов: browseCommand
Имя Класса в Базе данных Х ресурсов: BrowseCommand


Определяет команду, которая выполняется каждый раз, когда изменяется активная ячейка. В команде могут использоваться %-подстановки, описанные ниже в разделе  Командные подстановки.
 

Имя опции в Командной строке:-cache
Имя опции в Базе данных Х ресурсов: cache
Имя Класса в Базе данных Х ресурсов: Cache


Булева величина, которая определяет, будет ли использоваться внутренний кеш таблицы. Его использование позволяет существенно повысить производительность при использовании опции -command, но требует дополнительной памяти. Может улучшить производительность и тогда, когда опции -command и -variable не заданы. Кеш автоматически сбрасывается всякий раз при изменении опций -cache и -variable, в противном случае Вы должны сами сделать это. Значение по умолчанию - ложь.
 

Имя опции в Командной строке:-colorigin
Имя опции в Базе данных Х ресурсов: colOrigin
Имя Класса в Базе данных Х ресурсов: Origin
Определяет, какой индекс столбца является самым левым столбцом в таблице. Эта величина используется для пользовательских индексов в таблице. Значение по умолчанию - '0'.
  Имя опции в Командной строке:-cols
Имя опции в Базе данных Х ресурсов: cols
Имя Класса в Базе данных Х ресурсов: Cols


Число столбцов в таблице. Значение по умолчанию - '10'.

 
Имя опции в Командной строке:-colseparator
Имя опции в Базе данных Х ресурсов: colSeparator
Имя Класса в Базе данных Х ресурсов: Separator


Определяет символ, который будет использоваться как разделитель столбцов при выборе данных из таблицы или при вставке данных в таблицу. По умолчанию, столбцы разделяются как элементы tcl-списка.
 

Имя опции в Командной строке:-colstretchmode
Имя опции в Базе данных Х ресурсов: colStretchMode
Имя Класса в Базе данных Х ресурсов: StretchMode
Определяет один из следующих способов расширения столбцов для заполнения дополнительного пространства окна:

none

Столбцы не расширяются и не заполняют все отведенное пространство окна таблицы. Если столбцы слишком узки, то в таблице справа будет пробел. Это - значение по умолчанию. unset Расширяются только те столбцы, которые не имеют явно заданной ширины. all Все столбцы расширяются на одно и то же количество пикселей, чтобы заполнить все пространство окна. В этом режиме могут возникнуть трудности при ручном изменении размеров ширины ячейки. fill (используется только при значении опции -rowstretch, равном currently) В таблице получится больше или меньше столбцов в соответствии с величиной отведенного пространства. Этот способ имеет многочисленные причуды и может исчезнуть в будущем. last Последний столбец расширяется так, чтобы заполнить все пространство окна таблицы. Имя опции в Командной строке:-coltagcommand
Имя опции в Базе данных Х ресурсов: colTagCommand
Имя Класса в Базе данных Х ресурсов: TagCommand


Задает имя процедуры, которая выполняется, чтобы определить тэг, который используется для данного столбца. Чтобы определить, как отображать ячейку, сначала проверяется, не задан ли тэг для столбца с помощью команды tag col. Если тэг для столбца не задан, выполняется процедура, определенная с помощью настоящей опции. Процедура получает номер столбца в качестве единственного аргумента. Процедура должна возвратить имя тэга или пустую строку. Если при выполнении процедуры происходит ошибка или процедура возвращает недопустимое имя тэга, сообщения об ошибке не выдается.
 

Имя опции в Командной строке:-colwidth
Имя опции в Базе данных Х ресурсов: colWidth
Имя Класса в Базе данных Х ресурсов: ColWidth
Задает ширину столбца по умолчанию. Ширина столбца определяется в символах шрифта (используемого по умолчанию), если она является положительным числом, или в пикселях, если она является отрицательным числом. Значение по умолчанию - `10'.
  Имя опции в Командной строке:-command
Имя опции в Базе данных Х ресурсов: command
Имя Класса в Базе данных Х ресурсов: Command


Определяет команду, которая используется в качестве процедурного интерфейса к содержимому ячеек. Если опция -usecommand имеет значение истина, эта команда будет использоваться вместо любой ссылки на массив - variable. При выборе значения из таблицы вместо содержимого ячейки возвращается результат выполнения команды. Использует %-подстановки, описанные ниже в разделе  Командные подстановки.
 

Имя опции в Командной строке:-drawmode
Имя опции в Базе данных Х ресурсов: drawMode
Имя Класса в Базе данных Х ресурсов: DrawMode


Устанавливает один из следующих режимов рисования таблицы:

slow

Таблица предварительно формируется в памяти (offscreen pixmap) с использованием двойной буферизации. Для границ используются Tk-функции. Этот способ исключает мигание, но оказывается медленным для больших таблиц. compatible Таблица изображается непосредственно на экране с использованием Tk-функций для границ. Это более быстрый способ, но экран может мигать При изменениях. Это - значение по умолчанию. fast Таблица изображается непосредственно на экране, причем границы рисуются с использованием быстрых X-вызывов, то есть шириной в один пиксель. Как побочный эффект, сужается область значений допустимых значений опции -borderwidth до `0' и `1'. Этот способ обеспечивает наилучшую производительность для больших таблиц, но при этом возможно мигание. Кроме того, этот способ допустим не при всех возможных в Tk значениях ширины границы. single Таблица рисуется на экране как в режиме fast, но линии изображаются только одним пикселем. Имя опции в Командной строке: -flashmode
Имя опции в Базе данных Х ресурсов: flashMode
мя Класса в Базе данных Х ресурсов: FlashMode
Булево значение, которое определяет, будут ли ячейки мигать, когда их величина изменяется. Тэг flash назначается этим ячейкам на время, определенное с помощью опции -flashtime. По умолчанию устанавливается на 0.
  Имя опции в Командной строке:-flashtime
Имя опции в Базе данных Х ресурсов: flashTime
Имя Класса в Базе данных Х ресурсов: FlashTime


Время в четвертях секунды, в течение которого ячейка высвечивается при изменении величины. Опция -flashmode должно иметь значение on. Значение по умолчанию - 2.
 

Имя опции в Командной строке:-height
Имя опции в Базе данных Х ресурсов: height
Имя Класса в Базе данных Х ресурсов: Height


Определяет желаемую высоту для окна в рядах ячеек. Если задано нуль или менее, высота окна выбирается достаточно большой, чтобы содержать все ряды таблицы. Высота может ограничиваться с помощью опции -maxheight.
 

Имя опции в Командной строке:-invertselected
Имя опции в Базе данных Х ресурсов: invertSelected
Имя Класса в Базе данных Х ресурсов: InvertSelected


Определяет, будут ли цвета переднего и заднего планов ячейки заменены друг на друга вместо использования опций тэга sel, когда ячейка выбрана. По умолчанию устанавливается на 0 (использование опций тэга sel).
 

Имя опции в Командной строке:-maxheight
Имя опции в Базе данных Х ресурсов: maxHeight
Имя Класса в Базе данных Х ресурсов: MaxHeight
Максимально возможная высота окна в пикселях. Значение по умолчанию - 600.
  Имя опции в Командной строке:-maxwidth
Имя опции в Базе данных Х ресурсов: maxWidth
Имя Класса в Базе данных Х ресурсов: MaxWidth
Максимально возможная ширина окна в пикселях. Значение по умолчанию - 800.
  Имя опции в Командной строке:-multiline
Имя опции в Базе данных Х ресурсов: multiline
Имя Класса в Базе данных Х ресурсов: Multiline
Определяет значение по умолчанию для опции тэгов -multiline. Значение по умолчанию - `1'.
  Имя опции в Командной строке:-resizeborders
Имя опции в Базе данных Х ресурсов: resizeBorders
Имя Класса в Базе данных Х ресурсов: ResizeBorders
Определяет возможность интерактивного изменения размеров ячеек. Допустимые значения опции - row, col, both (по умолчанию) и none.
  Имя опции в Командной строке:-rowheight
Имя опции в Базе данных Х ресурсов: rowHeight
Имя Класса в Базе данных Х ресурсов: RowHeight
Высота колонки по умолчанию. Задается в числе строк текста (шрифта, устанавливаемого по умолчанию), когда число является положительными, или в пикселях, если оно - отрицательное. Значение по умолчанию - `1'.
  Имя опции в Командной строке:-roworigin
Имя опции в Базе данных Х ресурсов: rowOrigin
Имя Класса в Базе данных Х ресурсов: Origin
Определяет, какую строку считать самой верхней строкой таблицы. Эта величина используется для индексов пользователя в таблице. По умолчанию устанавливается на "0".
Имя опции в Командной строке:-rows
  Имя опции в Базе данных Х ресурсов: rows
Имя Класса в Базе данных Х ресурсов: Rows
Количество строк в таблице. Значение по умолчанию - `10'.
  Имя опции в Командной строке:-rowseparator
Имя опции в Базе данных Х ресурсов: rowSeparator
Имя Класса в Базе данных Х ресурсов: Separator
Определяет символ, который будет проинтерпретирован как разделитель строк при вставке или удалении данных из таблицы. По умолчанию, строки разделяются как списки tcl.
  Имя опции в Командной строке:-rowstretchmode
Имя опции в Базе данных Х ресурсов: rowStretchMode
Имя Класса в Базе данных Х ресурсов: StretchMode
Определяет способ расширения строк для заполнения дополнительного пространства окна. Допустимые значения опции такие же, как для опции -colstretchmode.
  Имя опции в Командной строке:-rowtagcommand
Имя опции в Базе данных Х ресурсов: rowTagCommand
Имя Класса в Базе данных Х ресурсов: TagCommand
Задает имя процедуры, которая выполняется, чтобы определить тэг, который используется для данной строки. Процедура определяется пользователем. Она получает номер строки в качестве единственного аргумента. Процедура должна возвратить имя тэга или пустую строку. Опция аналогична опции -coltagcommand и отличается только тем, что задает тэг строки.   Имя опции в Командной строке:-selectioncommand or -selcmd
Имя опции в Базе данных Х ресурсов: selectionCommand
Имя Класса в Базе данных Х ресурсов: SelectionCommand
Определяет команду, которая выполняется при получении значений ячеек через механизм выбора (например, при выполнении команды "selection get"). Результат выполнения команды возвращается как результат выбора. В команде могут использоваться %-подстановки, описанные ниже в разделе  Командные подстановки. Если при выполнении команды происходит ошибка, она обрабатывается как ошибка фонового Tcl процесса и команда ничего не возвращает.  
Имя опции в Командной строке:-selectmode
Имя опции в Базе данных Х ресурсов: selectMode
Имя Класса в Базе данных Х ресурсов: SelectMode
Определяет один из возможных режимов выбора ячеек. Величина опции может быть произвольной, но встроенная обработка имеется только для следующих режимов: single, browse, multiple и extended; значение по умолчанию browse. Эти режимы аналогичны соответствующим режимам для Tk listbox, за исключением того, что они применяются для двумерных таблиц.  
Имя опции в Командной строке:-selecttitle
Имя опции в Базе данных Х ресурсов: selectTitles
Имя Класса в Базе данных Х ресурсов: SelectTitles
Определяет, допускается ли выбор ячеек заголовков. По умолчанию устанавливается на '0' (выбор не допускается).  
Имя опции в Командной строке:-selecttype
Имя опции в Базе данных Х ресурсов: selectType
Имя Класса в Базе данных Х ресурсов: SelectType
Определяет один из различных типов выбора для таблицы. Опция может принимать одно из значений: row, col, cell, или both (означает row && col); значение по умолчанию cell. Определяет, будет ли изменение выбора для ячейки (установление или снятие) воздействовать на весь ряд и(или) колонку.  
Имя опции в Командной строке:-state
Имя опции в Базе данных Х ресурсов: state
Имя Класса в Базе данных Х ресурсов: State
Определяет одно из двух состояний таблицы: нормальное или неактивное. Если таблица не активна, то величины в ячейках не могут быть изменены с использованием команд таблицы и никакой курсор вставки не отображается, даже если фокус установлен в таблице. По умолчанию устанавливается нормальное состояние.   Имя опции в Командной строке:-titlecols
Имя опции в Базе данных Х ресурсов: titleCols
Имя Класса в Базе данных Х ресурсов: TitleCols
Количество столбцов, используемое для заголовков. По умолчанию устанавливается на '0'.  
Имя опции в Командной строке:-titlerows
Имя опции в Базе данных Х ресурсов: titleRows
Имя Класса в Базе данных Х ресурсов: TitleRows
Количество строк, используемое для заголовков. По умолчанию устанавливается на 0.  
Имя опции в Командной строке:-usecommand
Имя опции в Базе данных Х ресурсов: useCommand
Имя Класса в Базе данных Х ресурсов: UseCommand
Булева величина, которое определяет, будет ли использоваться команда, заданная с помощью опции -command. Эта величина переустанавливается в нуль, если команда используется и возвращает ошибку. Значение по умолчанию - `1' (команда будет использоваться, если она задана).  
Имя опции в Командной строке:-validate
Имя опции в Базе данных Х ресурсов: validate
Имя Класса в Базе данных Х ресурсов: Validate
Булева величина, определяющая, будет ли производиться проверка корректности значения активной ячейки. По умолчанию устанавливается на "0".  
Имя опции в Командной строке:-validatecommand или -vcmd
Имя опции в Базе данных Х ресурсов: validateCommand
Имя Класса в Базе данных Х ресурсов: ValidateCommand
Определяет команду, которая выполняется для проверки корректности нового значения при редактировании активной ячейки. Эта команда должна возвращать булеву величину. Если она возвращает true, то считается, что новое значение ячейки корректно. В противном случае считается, что введенное значение некорректно и изменения величины в ячейке не произойдет. Если при выполнении этой команды возникает ошибка, она обрабатывается как ошибка фонового Tcl процесса. В команде могут использоваться %-подстановки, описанные ниже в разделе Командные подстановки.  
Имя опции в Командной строке:-variable
Имя опции в Базе данных Х ресурсов: variable
Имя Класса в Базе данных Х ресурсов: Variable
Задает имя Tcl переменной (глобального массива), для работы с С массивом, связанным с данной таблицей. Массив будет создан, если он не существует или если это простая переменная. Индексы элементов массива имеют вид row,col для соответствующих ячеек. В массиве содержится также элемент active, который содержит величину буфера активной ячейки. Tcl массив может быть разреженным массивом (не требуется, чтобы в нем содержались элементы для всех ячеек таблицы). Более того, никакой элемент массива не содержит пустой величины, и при очистке ячейки соответствующий элемент удаляется из Tcl массива.  
Имя опции в Командной строке:-width
Имя опции в Базе данных Х ресурсов: width
Имя Класса в Базе данных Х ресурсов: Width
Определяет желаемую ширину для окна в столбцах ячеек. Если она задана равной нулю или отрицательной, то ширина для окна выбирается достаточно большой, чтобы содержать все столбцы в таблице. Определенная таким образом величина будет ограничена значением опции -maxwidth, если она задана.  
Имя опции в Командной строке:-wrap
Имя опции в Базе данных Х ресурсов: wrap
Имя Класса в Базе данных Х ресурсов: Wrap
Разрешает для тэга перенос текста в ячейках на следующую строку. Значение по умолчанию - '0'.
ОПИСАНИЕ КОМАНДЫ Команда table создает таблицу - 2-мерную сетку ячеек. Таблица может использовать переменную Tcl массива или Tcl команду для сохранения и выбора данных. Таблица имеет активную ячейку, содержимое которой может быть отредактировано (если таблица находится в нормальном состоянии). Таблица поддерживает общий стиль для ячеек, а также многочисленные тэги, которые могут использоваться, чтобы изменить стиль колонки, столбца или конкретной ячейки (см. "Теги"). Для ячеек можно установить поведение, при котором измененные ячейки меняют цвет на определенное время ("мигают"). Ячейки могут содержать не только текст, но и графические изображения или встроенные окна, как указано во фрагментахТеги и "Встроенные окна" соответственно.

Одна или более ячеек могут быть выбраны, как указано ниже. Если таблица экспортирует свой выбор (смотри опцию -exportselection), то соблюдаются стандартные протоколы X11 для обработки выбора. (См. "Выбор").

Не обязательно, чтобы все ячейки таблицы были видны сразу в табличном окне; описанные ниже команды могут использоваться для просмотра ячеек. Таблицы допускают "прокрутку" в обоих направлениях, используя стандартные опции -xscrollcommand и -yscrollcommand. Они также поддерживают просмотр ячеек, как указано ниже.

Чтобы обеспечить достаточную производительность, для таблиц можно выбирать один из трех методов прорисовки, два из которых являются полностью Tk-совместимыми.

ИНИЦИАЛИЗАЦИЯ Когда команда table загружается в интерпретатор, выполняется встроенная Tcl команда tkTableInit. Она ищет и исполняет файл с описанием стандартного поведения таблиц. Файл ищется в каталогах $tcl_pkgPath (как для конкретной, так и для произвольной версии Tktable), $tk_library и [pwd] (текущий каталог). Вы можете также определить $env(TK_TABLE_LIBRARY), который будет поставлен в начало этого списка. По умолчанию, ищется файл tkTable.tcl, но имя файла может быть изменено с помощью переменной $env(TK_TABLE_LIBRARY_FILE).

Этот скрипт может быть заменен на ваш собственный, если вы создадите собственную процедуру tkTableInit прежде, чем библиотека будет загружена. В противном случае, вышеупомянутая переменная env(TK_TABLE_LIBRARY) будет содержать имя каталога, в котором был найден файл $env(TK_TABLE_LIBRARY_FILE).

ИНДЕКСЫ Многие команды для таблиц используют один или более индексов как аргументы. Индекс определяет конкретную ячейку таблицы одним из следующих способов:

число,число

Определяет ячейку, соответствующую элементу row,col связанного Tcl массива, где -roworigin,-colorigin соответствует первой ячейке в таблице (0,0 по умолчанию). active Указывает активную ячейку, (ячейку, которая содержит курсор). Активная ячейка может задаваться командой activate. anchor Указывает якорную точку для выбора, которая устанавливается с помощью команды selection anchor. bottomright Указывает самую нижнюю - самую правую ячейку, видимую в таблице. end Указывает самую нижнюю - самую правую ячейку в таблице. origin Указывает самую верхнюю - самую левую редактируемую ячейку таблицы, не обязательно видимую на экране. topleft Указывает самую верхнюю - самую левую редактируемую ячейку, видимую в таблице. @x,y Указывает ячейку, которая покрывает в табличном окне точку с координатами x и y (в пикселях). Если никакая ячейка не покрывает эту точку, используется ближайшая к этой точке ячейка. В описаниях команд таблиц, приведенных ниже, аргументы, называющиеся index, first или last всегда обозначают индексы в одной из вышеуказанных форм.
ТЕГИ Тэг является текстовой строкой, которая связывается с нулем или больше колонок, столбцов или ячеек в таблице. Тэги могут содержать произвольные символы, но желательно избегать использования для тегов имен, похожих на индексы. С колонками, столбцами или ячейками таблицы может быть связано любое количество тэгов. В каждой таблице есть несколько постоянных тэгов, которые могут конфигурироваться пользователем и определят атрибуты для специальных ячеек:

active

Это тэг активной ячейки. flash Если режим высвечивания включен, этот тэг дается всем недавно отредактированным ячейкам. sel Этот тэг дается всем выбранным ячейкам. title Этот тэг дается всем ячейкам, используемым для заголовков колонок и строк. Для этого тэга по умолчанию определено состояние "неактивно". Тэги определяют, как соответствующие ячейки отображаются на экране. По умолчанию, ячейки отображаются, как определено опциями -background, -font, и -foreground для таблицы. Тем не менее, для каждого тэга могут быть заданы индивидуальные значения этих опций с помощью команды pathName tag configure Если для ячейки задан тэг, опции тэга переопределяют стиль таблицы. В настоящее времени для тэгов поддерживаются следующие опции:

-anchor anchor

якорь для текста или другого объекта в пространстве ячейки; -background или -bg color цвет Фона ячейки; -font fontName шрифт для текста в ячейке; -foeground или -fg color цвет переднего плана ячейки; -justify justify выключка текста в ячейке. Возможные значения left, right, center; -image imageName графический объект, который будет отображен в ячейке вместо текста; -multiline boolean отобразить текст с символами "конец строки" в виде нескольких строк; -relief relief рельеф для ячейки; -showtext boolean показывать текст поверх графического объекта; -state state состояние ячейки, позволяет определенным ячейкам быть неактивными. Это предохраняет ячейку от редактирования с помощью вставки или удаления, но остается возможным прямое занесение информации в массив, результаты которого отображаются в таблице; -wrap boolean разрешает переносить символы в следующую строку, если ячейка недостаточно широкая. Для тэгов определен порядок приоритета. Он используется при выполнении некоторых описанных ниже функций, связанных с тэгами. Когда ячейка отображается, ее свойства определяются тэгами, которые ей присвоены. Этот порядок, включая специальные тэги, - flash, active, sel, title, celltag, rowtag, coltag, default.

Если с ячейкой связано несколько различных тэгов и если их опции противоречат между собой, используются опции самого приоритетного тэга. Если конкретная опция не определена для конкретного тэга или если она определена как пустая строка, эта опция никогда не будет использована. Будет использовано значение опции от следующего по приоритету тэга. Если ни для одного тэга опция не определена, будет использован стиль, заданный по умолчанию для виджета.

Графические объекты используются только для показа. Редактирование текста в таких ячейках остается возможным, и любой запрос покажет текст, хранящийся в ячейке, независимо от значения опции -showtext.

ВСТРОЕННЫЕ ОКНА В таблице может быть произвольное количество встроенных окон (по одному на ячейку), и любой виджет (подчиняющийся обычным правилам, по которым встроенное окно должно быть потомком табличного окна или его родителя) может быть использован в качестве встроенного окна. Позиция встроенного окна на экране будет скорректирована, как только будет изменена или передвинута таблица, и оно будет отображено на экране или спрятано в зависимости от того, находится ли соответствующая ячейка в видимой области таблицы. Каждое встроенное окно занимает одну ячейку таблицы, и на него можно сослаться по индексу ячейки. Встроенные окна уничтожаются, когда уничтожается содержащая их таблица.

Окна используются только для показа. Текстовое значение для ячеек, занятых окнами, существует, но оно не отображается, пока окно не удаляется некоторым способом.

Когда встроенное окно вставлено в таблицу с помощью команды window configure, с ним связывается несколько опций, которые могут быть изменены с помощью последующих вызовов команды window configure. В настоящее время поддерживаются следующие опции:

-create script

В НАСТОЯЩЕЕ ВРЕМЯ НЕ ПОДДЕРЖИВАЕТСЯ. Определяет Tcl скрипт, который может выполняться для создания заявленного окна. Если для окна, встроенного в ячейку, опция -window не задана, при необходимости отобразить ячейку на экране будет выполнен скрипт. Скрипт должен создать окно и вернуть его имя как результат выполнения скрипта. Если впоследствии окно будет удалено, перед повторным появлением ячейки на экране скрипт будет выполнен опять. -background или -bg color Цвет Фона окна. Если опция не определена, то используется цвет фона таблицы. -padx pixels Как определено в руководстве по Tk. -pady pixels Как определено в руководстве по Tk. -relief relief Рельеф, используемый для ячейки, в которой лежит окно. Если опция не определена, используется значение для таблицы. -sticky sticky "Клейкость" окна в ячейке, как определено для команды grid. -window pathName Определяет имя окна, которое будет отображено в ячейке. Окно должно существовать прежде, чем может быть использовано здесь.
ВЫБОР Табличные выборы представляют собой данные типа СТРОКА. По умолчанию, величина выбора состоит из величин (значений) выбранных ячеек в форме Tcl списка, где каждый ряд является списком и каждый столбец является элементом списка ряда. Вы можете изменить способ, которым интерпретируется эта величина, с помощью опций -rowseparator и colseparator. Например, формат Эксела устанавливается с помощью значений
-rowseparator "\n" и -colseparator "\t". Изменение этих опций влияет как на формирование выбора для таблицы, так и на чтение данных при вставке, гарантируя, что в таблице можно вырезать данные и вставить их в нее же. Можно изменять поведение таблицы при вставке данных с помощью редактирования библиотечной процедуры tk_tablePasteHandler. Это может потребоваться, если установлена опция -selectioncommand.
КОМАНДНЫЕ ПОДСТАНОВКИ Команды, задающиеся с помощью различных опций таблиц, могут использовать традиционные для Tk %-ные подстановки (см. bind). Следующие %-ные подстановки выполняются при работе с таблицами:

%c

Для SelectionCommand это - максимальное количество столбцов в ряду в выбранной области.

Для остальных команд - индекс столбца ячейки, вызвавшей событие.

%c

Удобная замена для %r,%c. %i Для SelectionCommand это - общее число ячеек в выбранной области. Для Command это - `0' для чтения (get) и `1' для записи (set).

Для остальных команд - текущая позиция курсора в ячейке.

%R

Для SelectionCommand это - количество рядов в выбранной области. Для остальных команд - ряд ячейки, породившей событие.

%S

Для ValidateCommand это - текущее значение в ячейке, которое будет проверяться. Для SelectionCommand это - значение по умолчанию для выбора.

Для BrowseCommand это - индекс последней активной ячейки.

Для Command это - пустое значение для чтения (get) и текущая значение в ячейке для записи (set).

%S

Для ValidateCommand это - потенциальное новое значение в ячейке, значение в которой проверяется. Для BrowseCommand это - индекс новой активной ячейки.

%W

Имя окна, вызвавшего событие.
КОМАНДЫ ВИДЖЕТА Команда table создает новую команду Tcl, чье имя является именем созданного виджета. Эта команда может использоваться, чтобы выполнить различные действия с виджетом. У нее есть следующая общая форма:

pathName option ?arg arg ...?

где pathName - имя виджета.

Значение опции и аргументов определяют точное назначение команды.

Для таблиц определены следующие опции команды:

pathName activate index

Активизирует ячейку, заданную индексом. pathName bbox first ?last? Возвращает параметры области, объемлющей заданную ячейку (группу ячеек) в виде списка из четырех элементов: координат x и y левого верхнего угла области, ее ширины и высоты в пикселях. Область объемлет только те из указанных ячеек, которые видны на экране. Если таких ячеек нет, возвращается пустая строка. pathName border optionargs Эта команда является волшебным средством, для переноса границ ячеек при изменении их размеров. Обычно она вызывается через события с одной из следующих подопций: pathName border mark x y ?row|col? Запоминает координаты x и y и границу строки и/или столбца под этой точкой в таблице, если точка лежит на границе. Используется в связке с последующей командой border dragto. Чаще всего эта команда вызывается по нажатию кнопки "Мыши" на таблице. Если аргумент row или col не задан, команда возвращает кортеж из обоих индексов границы (пустой кортеж означает, что точка не принадлежит границе). В противном случае возвращается индекс заданной границы (строки или столбца соответственно). pathName border dragto x y Эта команда вычисляет разность между своими x и y аргументами и y и x аргументами последней команды border mark для таблицы. Затем она изменяет положение границы на вычисленную разность. Эта команда обычно вызывается по событию движения "Мыши" в таблице, чтобы произвести эффект интерактивного изменения границы. pathName cget option Возвращает текущую величину опции. Option может быть любой из опций, определенных для таблиц. pathName clear option ?first? ?last? Эта команда является удобной утилитой, чтобы удалять различные объекты таблицы. first и last представляют правильные табличные индексы. Если ни один индекс не задан, команда выполняется для всей таблицы. Возможные подопции: pathName clear cache ?first? ?last? Очищает определенный раздел кеша, если таблица использовала кеш. pathName clear sizes ?first? ?last? Отменяет заданные размеры ячеек для столбцов и колонок, входящих в заданную область. Если задан только один индекс, например, '2,0', то он задает область, состоящую из колонки '2' и столбца '0'. pathName clear tags ?first? ?last? Очищает определенную область от тэгов (все row, column и cell тэги). pathName clear all ?first? ?last? Выполняет все вышеуказанные действия в определенной области. pathName configure ?option? ?value? ?option value ...? Запрашивает или модифицируют опции таблицы. Если никакая опция не определена, возвращает список, описывающий все доступные опции для виджета (смотри Tk_ConfigureInfo для информации о формате этого списка). Если опция указана без значения, команда возвращает список, описывающий одну опцию (этот список идентичен соответствующему подсписку списка, возвращаемого, если никакая опция не задана). Если заданы одна или более пар опция-величина, то команда модифицирует данную опцию виджета, чтобы она имела данное значение (значения); в этом случае команда возвращает пустую строку. Опция может быть любой из опций, определенных для команды table. pathName curselection ?set value? Если аргументы команды не заданы, то команда возвращает отсортированные индексы выбранных ячеек. В противном случае она устанавливает во все выбранные ячейки заданное значение. Опция set не воздействует на таблицу, если у таблицы нет связанного Tcl массива или состояние таблицы неактивно. pathName curvalue?value? Если величина не задана, возвращается величина из редактируемой ячейки (с индексом active), иначе величина устанавливается в активной величине. pathName deleteoptionarg?arg? Эта команда используется, чтобы удалять различные компоненты таблицы. У нее есть различные формы, в зависимости от подопции: pathName deleteactive index?index? Удаляет текст из активной ячейки. Если дан только один индекс, команда удаляет символ после этого индекса, в противном случае удаляются символы с первого индекса по второй. index может быть числом, insert или end. pathName deletecols?switches?index?count? Удаляет count колонок, начиная с колонки с индексом index. Если count - отрицательное, удаляет колонки влево от начальной. В противном случае удаляет колонки вправо. Выбор очистится. Дополнительные ключи: -cols value Устанавливает искусственное ограничение на число столбцов в активной области. Столбцы за пределами активной области при этом изменяться не будут. По умолчанию используется величина опции -cols таблицы, то есть активная область распространяется на все столбцы. Использование опции может вызвать интересные побочные эффекты, когда опция используется в связке с другими опциями. -holddimensions Обеспечивает сохранение числа столбцов в таблице (при удалении могут появиться пустые столбцы вместо удаленных). По умолчанию число столбцов уменьшается в соответствии со значением count. -holdtags Обеспечивает сохранение тэгов, созданных с помощью команды tag, при удалении всех ячеек, для которых они были заданы. Тэги присваиваются новым ячейкам с соответствующими индексами. Также предотвращает изменение ширины таблицы, если она задана с помощью команды width. По умолчанию новые ячейки, вставшие на место удаленных, не наследуют их тегов. -keeptitles Защищает ячейки области заголовка от изменения. В противном случае они могут быть удалены подобно регулярным ячейкам. -rows value Устанавливает искусственное ограничение на число строк в активной области. Строки за пределами активной области при этом изменяться не будут. По умолчанию используется величина опции -rows таблицы, то есть активная область распространяется на все строки. Использование опции может вызвать интересные побочные эффекты, когда опция используется в связке с другими опциями. -- Означает конец ключей. pathName delete rows ?switches?index?count? Удаляет count строк таблицы, начиная со строки index (и включая ее). Если count отрицательное, то удаляются предшествующие строки. В противном случае удаляются последующие строки. Выбор очищается. Ключи - такие же, как для удаления столбца. pathName flush?first? ?last? Сохраняет табличный кеш от first до last. Если индексы не заданы, сохраняется весь кеш. pathName getfirst?last? Возвращает (в виде списка) значения из ячеек, содержащихся в прямоугольной области с левым верхним углом, заданным индексом first, и правым нижним углом, определяемым индексом last (если задан). pathName height?row? ?value rowvalue ...? Если никакая строка не задана, возвращает список, описывающий все строки, для которых высота установлена. Если колонка задана без величины, возвращает высоту этой колонки в символах (положительное число) или пикселях (отрицательное число). Если одна или более пар строка-величина определены, тогда, устанавливает высоту соответствующих строк в строках символов (положительное число) или пикселях (отрицательный номер). Если задано значение высоты "default", то высота строки определяется значением опции -rowheight. pathName icursor?arg? Если команда задана без аргументов, то она возвращает позицию курсора вставки в активной ячейке. Если команда задана с одним аргументом, то она устанавливает курсор в этой точке в строке. 0 - перед первым символом. Допустимые индексы: insert для текущего положения курсора и end для конца текста. pathName index index?row|col? Возвращает индекс ячейки, которая соответствует указанному индексу, в форме row,col. Если задана опция row или col, то команда возвращает только индекс строки или столбца соответственно. pathName insertoptionarg arg Эта команда используется, чтобы вставлять различные объекты (значения, колонки, столбцы и т.п.) в таблицу. У нее есть различные формы в зависимости от подопции: pathName insert active index value value является текстовой строкой, которая вставляется в активную ячейку, начиная с позиции index. Курсор затем позиционируется после встроенного текста. index может быть числом, insert или end. pathName insert cols?switches? index ?count? Вставляет count столбцов, начиная с индекса col. Если count является отрицательным числом, они вставляются перед столбцом с индексом col. В противном случае они вставляются после столбца с индексом col. Выбор очищается. Ключи - те же, как при удаления столбца. pathName insert rows ?switches? index ?count? Вставляет count строк, начиная с индекса col. Если count является отрицательным числом, они вставляются перед строкой с индексом col. В противном случае они вставляются после строки с индексом col. Выбор очистится. Ключи - те же, как для удаления строки. pathName reread Перечитывает старое содержимое ячейки снова в буфер редактирования. Полезно для обработки событий, когда <Escape> нажимается, чтобы прервать редактирование (стандартное поведение). pathName scan option args Эта команда используется, чтобы осуществить "прокрутку" таблицы. У нее есть две формы в зависимости от опций: pathName scan mark x y Запоминает текущие координаты x и y и вид таблицы; используется в связке с последующей scan dragto командой. Обычно эта команда вызывается по нажатию на кнопку "Мыши". Возвращает пустую строку. pathName scan dragto x y Эта команда вычисляет разность между текущими координатами y и x и координатами x и y, запомненными в последней команде scan mark для данного виджета. Затем она "прокручивает" таблицу на 5-кратную разность координат. Эта команда обычно вызывается при движении "Мыши" на таблице и используется для ускоренного просмотра таблицы. Возвращает пустую строку. pathName seeindex "Прокручивает" таблицу так, чтобы ячейка, заданная индексом, оказалась первой ячейкой с левого верхнего края таблицы (исключая строки и столбцы заголовков), если ячейка к настоящему времени не видна на экране. Фактическая ячейка может не оказаться самой первой, если за ней в таблице недостаточно ячеек, чтобы заполнить экран. pathName selectionoptionarg Эта команда используется, чтобы управлять выбором в таблице. У нее есть различные формы, в зависимости от опций: pathName selectionanchorinde Устанавливает якорь выбора в ячейке, заданной индексом. Якорь выбора является концом выбора, который фиксируется, пока второй конец области выбора передвигается с помощью "Мыши". Индекс anchor может использоваться для ссылок на соответствующую ячейку. pathName selection clear first ?last? Снимает выбор с выбранных ячеек от first до last (включительно). Состояние выбора для ячеек за пределами этой области не изменяется. Если first равно all, команда удаляет выбор из всех ячеек. pathName selection includesindex Возвращает `1', если ячейка, указанная индексом, выбрана, и `0' - если нет. pathName selection set first ?last? Выбирает все ячейки в области от first до last включительно, не влияя на состояние выбора ячеек за пределами этой области. pathName set?row|col? index?value? ?index value ...? Для каждой пары index value устанавливает значение value в ячейке, определенной индексом. Проверка корректности значений при этом не производится. Если списку пар индекс-величина предшествует row или col, величина value рассматривается как Tcl список, и значения из списка устанавливаются в последовательных ячейках строки или колонки соответственно. Например, команда set row 2,3 {2,3 2,4 2,5} Установит значения в 3 ячейки, от 2,3 до 2,5. pathName tagoption?arg arg ...? Эта команда используется, чтобы управлять тэгами. Точное поведение команды зависит от значения опции и аргументов. Только опция cget требует использования реально существующих тэгов. В настоящее время поддерживаются следующие формы команды: pathName tag cell tagName?index ... ? Если команда задана без аргументов, то она распечатывает список ячеек, которые используют тэг. В противном случае она устанавливает тэг заданным ячейкам. Если тэг пустой ({}), ячейкам восстанавливается тэг по умолчанию. Тэги, добавленные с помощью опций -*tagcommand, здесь не обрабатываются. pathName tag cget tagNameoption Эта команда возвращает текущую величину опции option для тэга tagName. option может быть любой из опций, определенных для команды tag configure для таблиц. pathName tag col tagName?col ... ? Если команда задана без аргументов, то она распечатывает список колонок, которые используют данный тэг. В противном случае устанавливает тэг заданным столбцам. Если тэг пустой ({}), столбцам восстанавливается тэг по умолчанию. Тэги, добавленные с помощью опции -coltagcommand, здесь не обрабатываются. pathName tag configure tagName ?option? ?value? ?option value ...? Эта команда подобна команде configure для таблиц, за исключением того, что она изменяет опции, связыванные с тэгом tagName вместо модификации опций для всей таблицы. Если никакая опция не задана, команда возвращает список всех доступных опций для tag_Name (смотри Tk_ConfigureInfo для информации о формате этого списка). Если опция указана без величины, возвращается подсписок указанного списка, соответствующий указанной опции. Если указана одна или более пар опция- величина, то команда модифицирует данную опцию (опции) для указанного тэга; в этом случае команда возвращает пустую строку. См. "ТЭГИ". pathName tag delete tagName Удаляет тэг. Если тэг не существует, ошибки не возникает. pathName tag exists tagName Возвращает `1', если указанный тэг существует, и '0' - в противном случае. pathName tag includes tagNameindex Возвращает `1', если ячейка с данным индексом имеет указанный тэг, и '0' - в противном случае. pathName tag names ?pattern? Если никакой образец не задан, показывает имена всех определенных тэгов в таблице. В противном случае образец используется в качестве шаблона, и показываются только тэги, удовлетворяющие этому шаблону. pathName tag row tagName?row ...? Если команда задана без аргументов, то она распечатывает список строк, которые используют данный тэг. В противном случае она устанавливает данный тэг указанным строкам. Если тэг пустой ({}), строкам восстанавливается тэг по умолчанию. Тэги, добавленные с помощью опции -rowtagcommand, не обрабатываются здесь. pathName validateindex Явно проверяет корректность значения в ячейке, определенной индексом, с помощью команды, заданной опцией -validatecommand. Возвращает '0' или `1' в зависимости от результатов проверки. pathName width?col? ?value col value ...? Если никакой столбец не задан, возвращает список, описывающий все столбцы, для которых установлена ширина. Если столбец указан без указания ширины, команда возвращает ширину соответствующего столбца в символах (положительное число) или пикселях (отрицательное число). Если заданы одна или более пар колонка-величина, тогда команда устанавливает каждому перечисленному столбцу соответствующую ширину в символах (положительное число) или пикселях (отрицательное число). Если величина совпадает с шириной, задаваемой по умолчанию, колонка в дальнейшем будет использовать ширину, определенную с помощью опции -colwidth. pathName window option ?arg arg ...? Эта команда используется, чтобы управлять встроенными окнами. Точное поведение команды зависит от значения опции и аргументов. В настоящее время поддерживаются следующие формы команды: pathName window cget index option Эта команда возвращает текущую величину опции option для окна в ячейке с данным индексом. option может иметь любое из значений, допустимых для команды window configure. pathName window configureindex ?option? ?value? ?option value ...? Эта команда подобна команде configure для таблицы, за исключением того, что она изменяет опции, связанные с встроенным окном с данным индексом, а не опции таблицы в целом. Если опция указана без величины, возвращается подсписок указанного списка, соответствующий указанной опции. Если указана одна или более пар опция-величина, то команда модифицирует данную опцию (опции) для указанного окна; в этом случае команда возвращает пустую строку. См. "Встроенные окна". pathName window deleteindex ?index ...? Удаляет встроенное окно из таблицы. Соответствующее окно также будет удалено. pathName window move indexFrom indexTo Перемещает встроенное окно из одной ячейки в другую. Если в целевой ячейке уже существует другое окно, оно будет удалено. pathName window names ?pattern? Если никакой шаблон не задан, команда показывает все ячейки, в которых есть встроенные окна. В противном случае показывает только те ячейки, в которых есть встроенные окна с именами, удовлетворяющими шаблону. pathName xview args Эта команда используется для запросов о горизонтальной позиции таблицы в окне и для изменения горизонтальной позиции таблицы в окне. Команда может использоваться в одной из следующих форм: pathName xview
  Возвращает список, содержащий два элемента. Каждый из них является действительным числом из диапазона '0' - `1'. Они указывают соответственно левую и правую границы видимой области. Например, если первый элемент - ".2" а второй элемент - ".6", то 20% табличного текста выходит за пределы экрана слева, средние 40% текста видны в окне, и 40% текста выходит за пределы экрана вправо. Эти величины используются для конфигурации полос прокрутки с помощью команды, заданной опцией -xscrollcommand. pathName xview index
  "Прокручивает" таблицу так, чтобы столбец с данным индексом отображался на левом крае окна. pathName xview moveto fraction
  "Прокручивает" таблицу так, чтобы доля общей ширины табличного текста, выходящая за пределы экрана влево, равнялась fraction. fraction должно быть дробью между '0' и `1'. pathName xview scroll numberwhat Эта команда "прокручивает" таблицу влево или вправо на заданное расстояние. number должно быть целым числом. what должно быть units или pages или сокращением одного из их. Если what равно units, таблица сдвигается на number символов (символ равен ширине символа 0); если what равно pages, таблица сдвигается на соответствующее число экранов. Если number является отрицательным числом, тогда более левые символы становятся видимыми; если number - положительное число, тогда более правые символы становятся видимыми. pathName yviewargs Эта команда используется для запросов о вертикальной позиции таблицы в окне и для изменения вертикальной позиции таблицы в окне. Команда может использоваться в одной из следующих форм: pathName xview Возвращает список, содержащий два элемента. Каждый из них является действительным числом из диапазона '0' - `1'. Они указывают соответственно верхнюю и нижнюю границы видимой области (например, `.5' означает середину таблицы) Эти величины используются для конфигурации полос прокрутки с помощью команды, заданной опцией
-yscrollcommand.
pathName yview index "Прокручивает" таблицу так, чтобы строка с данным индексом отображалась на верхнем крае окна. pathName yview moveto fraction "Прокручивает" таблицу так, чтобы доля общей высоты табличного текста, выходящая за пределы экрана вверх, равнялась fraction. fraction должно быть дробью между '0' и `1'. pathName yview scroll number what Эта команда "прокручивает" таблицу вверх или вниз на заданное расстояние. number должно быть целым числом. what должно быть units или pages или сокращением одного из их. Если what равно units, таблица сдвигается на number строк текста; если what равно pages, таблица сдвигается на соответствующее число экранов. Если number является отрицательным числом, тогда более ранние символы становятся видимыми; если number - положительное число, тогда более поздние символы становятся видимыми.
СТАНДАРТНОЕ ПОВЕДЕНИЕ
  Вновь созданная таблица обладает следующим поведением.

[1] Нажатие левой кнопки "Мыши" в ячейке активизирует эту ячейку. Нажатие кнопки "Мыши" в уже активной ячейке перемещает курсор вставки на ближайший символ.

[2] Перемещение курсора "Мыши", при нажатой левой кнопке, позволяет выделить область таблицы. Выход курсора из таблицы вниз, при нажатой левой кнопке "Мыши", обеспечивает прокрутку таблицы одновременно с выделением ячеек.

[3] Перемещение курсора "Мыши", при нажатой средней кнопке "Мыши", обеспечивает прокрутку таблицы без выделения.

[4] Клавиша Home возвращает к началу таблицы.

[5] Клавиша End перемещает в конец таблицы.

[6] Сочетание клавиш Control-Home перемещает в начало таблицы и активизирует первую ячейку.

[7] Сочетание клавиш Control-End перемещает в конец таблицы и активизирует последнюю ячейку.

[8] Сочетание клавиш Shift-Control-Home расширяет выделенную область таблицы до ее начала.

[9] Сочетание клавиш Shift-Control-End расширяет выделенную область таблицы до ее конца.

[10] Клавиши с изображениями стрелок позволяют выбрать соседнюю ячейку в соответствующем направлении.

[11] Сочетание клавиш Shift-<arrow> расширяет выбранную область в направлении, указываемом стрелкой.

[12] Сочетание клавиш Control-leftarrow и Control-rightarrow перемещают курсор вставки внутри ячейки.

[13] Сочетание клавиш Control-slash выбирает все ячейки.

[14] Сочетание клавиш Control-backslash clears снимает выбор со всех ячеек.

[15] Клавиша Backspace удаляет символ перед курсором вставки в активной ячейке.

[16] Клавиша Delete удаляет символ после курсора вставки в активной ячейке.

[17] Клавиша Escape перечитывает содержимое активной ячейки из заданного источника данных, отменяя любые изменения, выполненные в ячейке.

[18] Сочетание клавиш Control-a перемещает курсор вставки в начало активной ячейки.

[19] Сочетание клавиш Control-e перемещает курсор вставки в конец активной ячейки.

[20] Control-minus и Control-equals уменьшает и увеличивает ширину столбца, содержащего активную ячейку.

[21] Перемещение курсора "Мыши" с нажатой правой кнопкой когда курсор находится на границе ячейки вызовет изменение размеров строки и/или столбца, (при соответствующей величине опция -resizeborders).

Поведение таблицы может незначительно отличаться от описанного выше в зависимости от значения опции -selectionmode.

Если таблица дезактивирована с помощью опции -state, то ее вид не отличается от вида активной таблицы, и ячейки могут по-прежнему быть выбраны, но никакой курсор вставки не появится в ячейках и никакие модификации ячейки не произойдут.

Поведение таблиц может изменяться путем определения новых событий для конкретной таблицы или путем переопределения событий для всего класса. Описание стандартных событий приведено в файле tkTable.tcl.

Начало раздела Back

Все права защищены 1992-1999 DataX/FLORIN, Inc.
Ваши пожелания и предложения принимаются вебмастером