scrollbar
Создание примитива линейки прокрутки и управление им.
СИНТАКСИС
scrollbar имяПути ?параметры?
СТАНДАРТНЫЕ ПАРАМЕТРЫ
- -activebackground
- -background
- -borderwidth
- -cursor
- -highlightbackground
- -highlightcolor
- -highlightthickness
- -jump
- -orient
- -relief
- -repeatdelay
- -repeatinterval
- -takefocus
- -troughcolor
Подробное описание этих параметров приведено в разделе options.
ДОПОЛНИТЕЛЬНЫЕ ПАРАМЕТРЫ ПРИМИТИВА
Имя параметра: | -activerelief |
Имя в Базе: | activeRelief |
Класс в Базе: | ActiveRelief |
Задает объемный вид изображения активного элемента. Все
неактивные элементы изображаются выпуклыми.
Имя параметра: | -command |
Имя в Базе: | command |
Класс в Базе: | Command |
Задает префикс команды Tcl, исполняемой при всяком изменении
состоянии линейки прокрутки пользователем. Сама команда Tcl
состоит из этого префикса, за которым следует дополнительная
информация, описанная ниже. Значением этого параметра обычно
является что-нибудь вроде .t xview или
.t yview имя примитива, за которым следует
xview (для горизонтальной линейки) или
yview (для вертикальной). У каждого примитива
линейки прокрутки есть команды xview и
yview, аргументы которых описаны ниже (см.
"Команды
прокрутки").
Имя параметра: | -elementborderwidth |
Имя в Базе: | elementBorderWidth |
Класс в Базе: | ElementBorderWidth |
Задает ширину окантовки каждого из внутренних элементов линейки
(обеих стрелок и движка). Значение может быть представлено в
любом виде, приемлемом для Tk_GetPixels. Если
заданное значение отрицательно, то вместо него используется
значение параметра borderWidth.
Имя параметра: | -width |
Имя в Базе: | width |
Класс в Базе: | Width |
Задает желаемую толщину окна линейки (не включая трехмерной
окантовки, если она имеется) в любой форме, приемлемой для
Tk_GetPixels. Для вертикальной шкалы это ее
ширина, для горизонтальной высота.
ОПИСАНИЕ
Команда scrollbar создает новое окно
(задаваемое аргументом имяПути) и превращает его в
примитив линейки прокрутки. Детали изображения линейки, такие
как ее цвета, ориентация и объемный вид, задаются с помощью
описанных выше дополнительных параметров. Команда возвращает
аргумент имяПути. В момент выполнения этой команды не
должно существовать окна с именем имяПути, но должен
существовать его предок.
Линейка прокрутки представляет собой примитив, который выводит
на экран две стрелки (по одной на каждом конце линейки) и
движок в средней части линейки. Линейка дает информацию
о том, что видно в ассоциированном окне линейки. Это
окно содержит какой-нибудь документ например, редактируемый
текст или рисунок. Размер и положение движка указывают, какая
часть документа видна в окне. Если, например, движок покрывает
верхнюю треть вертикальной линейки, то в ассоциированном окне
выведена верхняя треть документа.
Линейки прокрутки используются для перемещения видимой части
документа в ассоциированном окне с помощью
"Мыши". Подробности описаны ниже (см. "Привязки").
ЭЛЕМЕНТЫ
Линейка прокрутки состоит из пяти элементов, на которые
ссылаются команды примитива:
- arrow1
- Верхняя или левая стрелка линейки.
- trough1
- Промежуток между движком и первой стрелкой.
- slider
- Прямоугольник, который показывает, какая часть документа
видна на экране.
- trough2
- Промежуток между движком и первой стрелкой.
- arrow2
- Нижняя или правая стрелка линейки.
КОМАНДА ПРИМИТИВА
Команда scrollbar создает новую команду Tcl с
именем имяПути. С помощью этой команды можно выполнять
различные операции над примитивом. Ее общий вид
имяПути параметр ?арг арг ...?
Параметр и аргументы уточняют поведение
команды. Примитивы линейки прокрутки допускают следующие формы
команды:
- имяПути activate
?элемент?
- Помечает элемент, заданный аргументом элемент, как
активный. Активный элемент отображается на экране с
использованием значений параметров activeBackground и
activeRelief. Значениями аргумента могут быть только
arrow1, slider или
arrow2. Если элемент не задан, то
команда возвращает имя текущего активного элемента; если
активных элементов нет, то команда возвращает пустую
строку.
- имяПути cget
параметр
- Возвращает текущее значение параметра конфигурации с именем
параметр. Параметр может быть любым из
параметров команды scrollbar.
- имяПути configure ?параметр?
?значение параметр значение ...?
- Запрашивает значения параметров конфигурации примитива или
изменяет их. Если параметр не указан, то возвращает
список, содержащий значения всех допустимых в
имениПути параметров (формат списка описан в
Tk_ConfigureInfo). Если параметр
задан, а его новое значение нет, то команда
возвращает часть полного списка, относящуюся к указанному
параметру. Если заданы одна или несколько пар
параметр-значение, то указанным параметрам примитива
присваиваются новые значения, а команда возвращает пустую
строку. Параметр может быть любым из параметров
команды scrollbar.
- имяПути delta прирX прирY
- Возвращает вещественное число, задающее изменение показателя
линейки при данном перемещении движка. Например, если линейка
горизонтальна, то результат указывает, насколько нужно
изменить показатель линейки, чтобы движок сдвинулся вправо на
прирX пикселей (в этом случае значение аргумента
прирY игнорируется). Если линейка вертикальна, то
результат указывает, насколько нужно изменить показатель
линейки, чтобы движок сдвинулся вниз на прирY
пикселей. Как аргументы, так и результат могут принимать
отрицательные и нулевое значения.
- имяПутиfraction x y
- Возвращает вещественное число между нулем и единицей,
указывающее, где на полосе линейки лежит точка с координатами
x и y. Значение "0" соответствует самой левой или
самой верхней точке полосы, значение "1" самой
правой или самой нижней, "0.5" указывает на середину
полосы и т.д. Координаты x и y это координаты в пикселях
относительно примитива линейки. Если они задают точку вне
полосы линейки, то вместо нее используется точка полосы,
ближайшая к заданной.
- имяПути get
- Возвращает показатели линейки в виде списка, элементы
которого значения аргументов последней выполненной команды
примитива set.
- имяПути identify x y
- Возвращает имя элемента, занимающего точку с координатами
(x,y) (например, arrow1). Если точка
расположена вне линейки, то команда возвращает пустую
строку. Координаты x и y это координаты в пикселах
относительно примитива линейки.
- имяПути set перв
послед
- Эта команда выполняется примитивом, ассоциированным с
линейкой, и сообщает линейке текущий вид этого
примитива. Значением каждого из двух аргументов команды
является число в промежутке от "0" до
"1". Эти числа описывают видимую в окне примитива
область документа. Если, например, значение аргумента
перв равно "0.2", а значение аргумента
послед равно "0.4", то верхушка видимой части
документа отстоит на 20% от его начала, а конец видимой части
на 40% от начала.
КОМАНДЫ ПРОКРУТКИ
Когда пользователь взаимодействует с линейкой прокрутки
(например, тащит движок), линейка требует от ассоциированного
примитива изменения его состояния. Это требование осуществляется
за счет исполнения команды Tcl, которая генерируется исходя из
значения параметра -command примитива
линейки. Команда может иметь один из следующих видов, где
префикс это значение параметра
-command (обычно что-нибудь вроде .t
yview).
- префикс moveto величина
- Величина представляет собой вещественное число между нулем и
единицей. Примитив должен изменить содержимое окна таким
образом, чтобы точка, заданная аргументом величина,
располагалась в начале окна. Например, величина равная
"0" указывает на начало документа, "1.0"
на его конец, "0.333" на точку, отстоящую от начала
документа на одну треть и т.д.
- префикс scroll число
units
- Сдвигает содержимое окна примитива на число
единиц. Единицы это порции документа, имеющие смысл для
документа данного типа (например, символы или строчки для
текстового примитива). Аргумент число может принимать
значение "1" (и тогда одна единица должна уйти из
окна вверх или влево), или "-1" (и тогда одна
единица должна уйти из окна вниз или вправо).
- префикс scroll
числоpages
- Содержимое окна примитива должно сдвинуться на
число страниц. Страницы это порции документа, имеющие
смысл для документа данного типа; обычно размер порции
несколько меньше того, что помещается в окне, и поэтому новое
содержимое окна частично перекрывается со старым. Аргумент
число может принимать значение "1" (и тогда
становится видимой следующая страница), или "-1" (и
тогда становится видимой предыдущая страница).
СИНТАКСИС КОМАНДЫ
В младших версиях Tk (до 4.0) команды примитива
set и get имели другой вид. В
целях совместимости эта форма команд поддерживается и до сих
пор, однако использовать ее не стоит. Вот старый вид команды:
имяПути set числоЕдин окноЕдин первЕдин последЕдин
Значения всех аргументов команды должны быть целыми
числами. Аргумент числоЕдин задает общее число единиц в
документе. Единицы это порции документа, имеющие смысл
для документа данного типа (например, строчки для текстового
примитива). Аргумент окноЕдин указывает число единиц,
одновременно помещающихся в окно ассоциированного
примитива. Аргументы первЕдин и последЕдин
указывают индексы первой и последней единиц, находящихся в окне
в текущий момент (ноль указывает на первую единицу объекта).
В старом синтаксисе команда get
возвращала список из четырех целых чисел значений аргументов
последней выполненной команды примитива set.
В старом синтаксисе команды, генерируемые примитивом линейки,
также имеют другой вид:
префикс единица
Аргумент единица представляет собой целое число,
указывающее, что должно появляться вверху или слева в окне
ассоциированного примитива. Этот аргумент интерпретируется так
же, как и аргументы первЕдин и последЕдин
команды примитива set.
Последняя выполненная команда примитива set определяет, следует
ли использовать старый синтаксис. Если ее аргументы два
вещественных числа, то в дальнейшем будет использоваться новый
синтаксис, а если четыре целых то старый.
ПРИВЯЗКИ
При создании линейки прокрутки Tk автоматически создает
привязки класса, определяющие следующее поведение примитива по
умолчанию. В случае, если имеются различия в поведении
вертикальной и горизонтальной линеек, описание поведения
горизонтальной приводится в скобках.
- При нажатии клавиши 1 "Мыши" на стрелке 1
(arrow1) содержимое окна ассоциированного
примитива сдвигается вниз (вправо) на одну единицу. Если
клавишу не отпускать, то сдвиг автоматически повторяется.
- При нажатии клавиши 1 "Мыши" на полосе 1
(trough1) содержимое окна ассоциированного
примитива сдвигается вниз (вправо) на один экран. Если клавишу
не отпускать, то сдвиг автоматически повторяется.
- Если нажать клавишу 1 на движке, то движок можно
тащить. Если значение параметра jump истина, то содержимое
окна не меняется, пока не отпущена клавиша
"Мыши".
- При нажатии клавиши 1 "Мыши" на полосе 2
(trough2) содержимое окна ассоциированного
примитива сдвигается вверх (влево) на один экран. Если клавишу
не отпускать, то сдвиг автоматически повторяется.
- При нажатии клавиши 1 "Мыши" на стрелке 2
(arrow2) содержимое окна ассоциированного
примитива сдвигается вверх (влево) на одну единицу. Если
клавишу не отпускать, то сдвиг автоматически повторяется.
- Если нажать клавишу 2 на полосе или на движке, то содержимое
окна переходит в положение, указанное курсором "Мыши" ; если
тащить курсор при нажатой клавише 2, то содержимое окна
движется вслед за курсором. Нажатие клавиши 2 на стрелках
приводит к тому же результату, что и нажатие клавиши 1.
- Если клавиша 1 нажимается при нажатой клавише
Control, то в окне появляется начало
документа (если курсор "Мыши" находится на стрелке 1
или полосе 1) или его конец (если курсор находится на стрелке
2 или полосе 2). При других положениях курсора такое нажатие
на клавиши не приводит ни к каким действиям.
- В вертикальных линейках прокрутки нажатие на клавиши
Up и Down приводят к такому
же результату, что и щелчок "Мыши" на стрелках вверх
и вниз соответственно. В горизонтальных линейках нажатие на
эти клавиши не вызывает никаких действий.
- В вертикальных линейках прокрутки нажатие на клавиши
Control-Up и Control-Down
приводят к такому же результату, что и щелчок "Мыши"
на верхней и нижней полосках линейки соответственно. В
горизонтальных линейках нажатие на эти клавиши не вызывает
никаких действий.
- В горизонтальных линейках прокрутки нажатие на клавиши
Up и Down приводят к такому
же результату, что и щелчок "Мыши" на левой и правой
стрелках соответственно. В вертикальных линейках нажатие на
эти клавиши не вызывает никаких действий.
- В горизонтальных линейках прокрутки нажатие на клавиши
Control-Up и Control-Down
приводят к такому же результату, что и щелчок "Мыши"
на левой и правой полосках линейки соответственно. В
вертикальных линейках нажатие на эти клавиши не вызывает
никаких действий.
- Нажатие на клавиши Prior и
Next приводят к такому же результату, что и
щелчки "Мыши" на полосе 1 и полосе 2
соответственно.
- Нажатие на клавишу Home приводит к появлению в
окне начала документа.
- Нажатие на клавишу End приводит к появлению в
окне конца документа.