434 lines
28 KiB
HTML
434 lines
28 KiB
HTML
<!DOCTYPE HTML PUBLIC -//W3C//DTD HTML 4.01 Transitional//EN>
|
||
<html>
|
||
<head>
|
||
<title>scrollbar</title>
|
||
</head>
|
||
<body>
|
||
<h1>scrollbar</h1>
|
||
|
||
<p>Создание примитива линейки прокрутки и управление им.</p>
|
||
|
||
|
||
|
||
<h2><a name=СИНТАКСИС></a>СИНТАКСИС</h2>
|
||
|
||
<pre>
|
||
<strong>scrollbar</strong> <em>имяПути</em> ?<em>параметры</em>?
|
||
</pre>
|
||
|
||
<h2><a name=СТАНДАРТНЫЕ_ПАРАМЕТРЫ></a>СТАНДАРТНЫЕ ПАРАМЕТРЫ</h2>
|
||
|
||
<ul>
|
||
<li><strong>-activebackground</strong></li>
|
||
<li><strong>-background</strong></li>
|
||
<li><strong>-borderwidth</strong></li>
|
||
<li><strong>-cursor</strong></li>
|
||
<li><strong>-highlightbackground</strong></li>
|
||
<li><strong>-highlightcolor</strong></li>
|
||
<li><strong>-highlightthickness</strong></li>
|
||
<li><strong>-jump</strong></li>
|
||
<li><strong>-orient</strong></li>
|
||
<li><strong>-relief</strong></li>
|
||
<li><strong>-repeatdelay</strong></li>
|
||
<li><strong>-repeatinterval</strong></li>
|
||
<li><strong>-takefocus</strong></li>
|
||
<li><strong>-troughcolor</strong></li>
|
||
</ul>
|
||
|
||
<p>Подробное описание этих параметров приведено в разделе <a
|
||
href=options.html><strong>options</strong></a>.</p>
|
||
|
||
<h2><a name=ДОПОЛНИТЕЛЬНЫЕ_ПАРАМЕТРЫ_ПРИМИТИВА></a>ДОПОЛНИТЕЛЬНЫЕ ПАРАМЕТРЫ ПРИМИТИВА</h2>
|
||
|
||
<table>
|
||
<tr><td>Имя параметра:</td><td><strong>-activerelief</strong></td></tr>
|
||
<tr><td>Имя в Базе:</td><td><strong>activeRelief</strong></td></tr>
|
||
<tr><td>Класс в Базе:</td><td><strong>ActiveRelief</strong></td></tr>
|
||
</table>
|
||
|
||
<p>Задает объемный вид изображения активного элемента. Все
|
||
неактивные элементы изображаются выпуклыми.</p>
|
||
|
||
<table>
|
||
<tr><td>Имя параметра:</td><td><strong>-command</strong></td></tr>
|
||
<tr><td>Имя в Базе:</td><td><strong>command</strong></td></tr>
|
||
<tr><td>Класс в Базе:</td><td><strong>Command</strong></td></tr>
|
||
</table>
|
||
|
||
<p>Задает префикс команды Tcl, исполняемой при всяком изменении
|
||
состоянии линейки прокрутки пользователем. Сама команда Tcl
|
||
состоит из этого префикса, за которым следует дополнительная
|
||
информация, описанная ниже. Значением этого параметра обычно
|
||
является что-нибудь вроде <strong>.t xview</strong> или
|
||
<strong>.t yview</strong> имя примитива, за которым следует
|
||
<strong>xview</strong> (для горизонтальной линейки) или
|
||
<strong>yview</strong> (для вертикальной). У каждого примитива
|
||
линейки прокрутки есть команды <strong>xview</strong> и
|
||
<strong>yview</strong>, аргументы которых описаны ниже (см.
|
||
"<a href=#КОМАНДЫ_ПРОКРУТКИ>Команды
|
||
прокрутки</a>").</p>
|
||
|
||
<table>
|
||
<tr><td>Имя параметра:</td><td><strong>-elementborderwidth</strong></td></tr>
|
||
<tr><td>Имя в Базе:</td><td><strong>elementBorderWidth</strong></td></tr>
|
||
<tr><td>Класс в Базе:</td><td><strong>ElementBorderWidth</strong></td></tr>
|
||
</table>
|
||
|
||
<p>Задает ширину окантовки каждого из внутренних элементов линейки
|
||
(обеих стрелок и движка). Значение может быть представлено в
|
||
любом виде, приемлемом для <strong>Tk_GetPixels</strong>. Если
|
||
заданное значение отрицательно, то вместо него используется
|
||
значение параметра <strong>borderWidth</strong>.</p>
|
||
|
||
<table>
|
||
<tr><td>Имя параметра:</td><td><strong>-width</strong></td></tr>
|
||
<tr><td>Имя в Базе:</td><td><strong>width</strong></td></tr>
|
||
<tr><td>Класс в Базе:</td><td><strong>Width</strong></td></tr>
|
||
</table>
|
||
|
||
<p>Задает желаемую толщину окна линейки (не включая трехмерной
|
||
окантовки, если она имеется) в любой форме, приемлемой для
|
||
<strong>Tk_GetPixels</strong>. Для вертикальной шкалы это ее
|
||
ширина, для горизонтальной высота.</p>
|
||
|
||
<h2><a name=ОПИСАНИЕ></a>ОПИСАНИЕ</h2>
|
||
|
||
<p>Команда <strong>scrollbar</strong> создает новое окно
|
||
(задаваемое аргументом <em>имяПути</em>) и превращает его в
|
||
примитив линейки прокрутки. Детали изображения линейки, такие
|
||
как ее цвета, ориентация и объемный вид, задаются с помощью
|
||
описанных выше дополнительных параметров. Команда возвращает
|
||
аргумент <em>имяПути</em>. В момент выполнения этой команды не
|
||
должно существовать окна с именем <em>имяПути</em>, но должен
|
||
существовать его предок.
|
||
|
||
<p>Линейка прокрутки представляет собой примитив, который выводит
|
||
на экран две стрелки (по одной на каждом конце линейки) и
|
||
<em>движок</em> в средней части линейки. Линейка дает информацию
|
||
о том, что видно в <em>ассоциированном окне</em> линейки. Это
|
||
окно содержит какой-нибудь документ например, редактируемый
|
||
текст или рисунок. Размер и положение движка указывают, какая
|
||
часть документа видна в окне. Если, например, движок покрывает
|
||
верхнюю треть вертикальной линейки, то в ассоциированном окне
|
||
выведена верхняя треть документа.</p>
|
||
|
||
<p>Линейки прокрутки используются для перемещения видимой части
|
||
документа в ассоциированном окне с помощью
|
||
"Мыши". Подробности описаны ниже (см. "<a
|
||
href=#ПРИВЯЗКИ>Привязки</a>").</p>
|
||
|
||
|
||
<h2><a name=ЭЛЕМЕНТЫ></a>ЭЛЕМЕНТЫ</h2>
|
||
|
||
<p>Линейка прокрутки состоит из пяти элементов, на которые
|
||
ссылаются команды примитива:</p>
|
||
|
||
<dl>
|
||
<dt><strong>arrow1</strong></dt>
|
||
|
||
<dd>Верхняя или левая стрелка линейки.</dd>
|
||
|
||
<dt><strong>trough1</strong></dt>
|
||
|
||
<dd>Промежуток между движком и первой стрелкой.</dd>
|
||
|
||
<dt><strong>slider</strong></dt>
|
||
|
||
<dd>Прямоугольник, который показывает, какая часть документа
|
||
видна на экране.</dd>
|
||
|
||
<dt> <strong>trough2</strong></dt>
|
||
|
||
<dd>Промежуток между движком и первой стрелкой.</dd>
|
||
|
||
<dt><strong>arrow2</strong></dt>
|
||
|
||
<dd>Нижняя или правая стрелка линейки.</dd>
|
||
</dl>
|
||
|
||
<h2><a name=КОМАНДА_ПРИМИТИВА></a>КОМАНДА ПРИМИТИВА</h2>
|
||
|
||
<p>Команда <strong>scrollbar</strong> создает новую команду Tcl с
|
||
именем <em>имяПути</em>. С помощью этой команды можно выполнять
|
||
различные операции над примитивом. Ее общий вид </p>
|
||
|
||
<pre>
|
||
имяПути параметр ?арг арг ...?
|
||
</pre>
|
||
|
||
<p><em>Параметр</em> и <em>арг</em>ументы уточняют поведение
|
||
команды. Примитивы линейки прокрутки допускают следующие формы
|
||
команды:</p>
|
||
|
||
<dl>
|
||
<dt><em>имяПути</em> <strong>activate</strong>
|
||
?<em>элемент</em>?</dt>
|
||
|
||
<dd>Помечает элемент, заданный аргументом элемент, как
|
||
активный. Активный элемент отображается на экране с
|
||
использованием значений параметров activeBackground и
|
||
activeRelief. Значениями аргумента могут быть только
|
||
<strong>arrow1</strong>, <strong>slider</strong> или
|
||
<strong>arrow2</strong>. Если <em>элемент</em> не задан, то
|
||
команда возвращает имя текущего активного элемента; если
|
||
активных элементов нет, то команда возвращает пустую
|
||
строку.</dd>
|
||
|
||
<dt><em>имяПути</em> <strong>cget</strong>
|
||
<em>параметр</em></dt>
|
||
|
||
<dd>Возвращает текущее значение параметра конфигурации с именем
|
||
<em>параметр</em>. <em>Параметр</em> может быть любым из
|
||
параметров команды <strong>scrollbar</strong>.</dd>
|
||
|
||
<dt><em>имяПути</em> <strong>configure</strong> ?<em>параметр</em>?
|
||
?<em>значение параметр значение ...</em>?</dt>
|
||
|
||
<dd>Запрашивает значения параметров конфигурации примитива или
|
||
изменяет их. Если <em>параметр</em> не указан, то возвращает
|
||
список, содержащий значения всех допустимых в
|
||
<em>имениПути</em> параметров (формат списка описан в
|
||
<strong>Tk_ConfigureInfo</strong>). Если <em>параметр</em>
|
||
задан, а его новое <em>значение</em> нет, то команда
|
||
возвращает часть полного списка, относящуюся к указанному
|
||
параметру. Если заданы одна или несколько пар
|
||
<em>параметр-значение</em>, то указанным параметрам примитива
|
||
присваиваются новые значения, а команда возвращает пустую
|
||
строку. <em>Параметр</em> может быть любым из параметров
|
||
команды <strong>scrollbar</strong>.</dd>
|
||
|
||
<dt><em>имяПути</em> <strong>delta</strong> <em>прирX прирY</em></dt>
|
||
|
||
<dd>Возвращает вещественное число, задающее изменение показателя
|
||
линейки при данном перемещении движка. Например, если линейка
|
||
горизонтальна, то результат указывает, насколько нужно
|
||
изменить показатель линейки, чтобы движок сдвинулся вправо на
|
||
<em>прирX</em> пикселей (в этом случае значение аргумента
|
||
<em>прирY</em> игнорируется). Если линейка вертикальна, то
|
||
результат указывает, насколько нужно изменить показатель
|
||
линейки, чтобы движок сдвинулся вниз на <em>прирY</em>
|
||
пикселей. Как аргументы, так и результат могут принимать
|
||
отрицательные и нулевое значения.</dd>
|
||
|
||
<dt><em>имяПути</em><strong>fraction</strong> <em>x y</em></dt>
|
||
|
||
<dd>Возвращает вещественное число между нулем и единицей,
|
||
указывающее, где на полосе линейки лежит точка с координатами
|
||
x и y. Значение "0" соответствует самой левой или
|
||
самой верхней точке полосы, значение "1" самой
|
||
правой или самой нижней, "0.5" указывает на середину
|
||
полосы и т.д. Координаты x и y это координаты в пикселях
|
||
относительно примитива линейки. Если они задают точку вне
|
||
полосы линейки, то вместо нее используется точка полосы,
|
||
ближайшая к заданной.</dd>
|
||
|
||
<dt><em>имяПути</em> <strong>get</strong></dt>
|
||
|
||
<dd>Возвращает показатели линейки в виде списка, элементы
|
||
которого значения аргументов последней выполненной команды
|
||
примитива <strong>set</strong>.</dd>
|
||
|
||
<dt><em>имяПути</em> <strong>identify</strong> <em>x y</em></dt>
|
||
|
||
<dd>Возвращает имя элемента, занимающего точку с координатами
|
||
(x,y) (например, <strong>arrow1</strong>). Если точка
|
||
расположена вне линейки, то команда возвращает пустую
|
||
строку. Координаты x и y это координаты в пикселах
|
||
относительно примитива линейки.</dd>
|
||
|
||
<dt><em>имяПути</em> <strong>set</strong> <em>перв
|
||
послед</em></dt>
|
||
|
||
<dd>Эта команда выполняется примитивом, ассоциированным с
|
||
линейкой, и сообщает линейке текущий вид этого
|
||
примитива. Значением каждого из двух аргументов команды
|
||
является число в промежутке от "0" до
|
||
"1". Эти числа описывают видимую в окне примитива
|
||
область документа. Если, например, значение аргумента
|
||
<em>перв</em> равно "0.2", а значение аргумента
|
||
<em>послед</em> равно "0.4", то верхушка видимой части
|
||
документа отстоит на 20% от его начала, а конец видимой части
|
||
на 40% от начала.</dd>
|
||
</dl>
|
||
|
||
<h2><a name=КОМАНДЫ_ПРОКРУТКИ></a>КОМАНДЫ ПРОКРУТКИ</h2>
|
||
|
||
<p>Когда пользователь взаимодействует с линейкой прокрутки
|
||
(например, тащит движок), линейка требует от ассоциированного
|
||
примитива изменения его состояния. Это требование осуществляется
|
||
за счет исполнения команды Tcl, которая генерируется исходя из
|
||
значения параметра <strong>-command</strong> примитива
|
||
линейки. Команда может иметь один из следующих видов, где
|
||
<em>префикс</em> это значение параметра
|
||
<strong>-command</strong> (обычно что-нибудь вроде <strong>.t
|
||
yview</strong>).</p>
|
||
|
||
<dl>
|
||
<dt><em>префикс</em> <strong>moveto</strong> <em>величина</em></dt>
|
||
|
||
<dd>Величина представляет собой вещественное число между нулем и
|
||
единицей. Примитив должен изменить содержимое окна таким
|
||
образом, чтобы точка, заданная аргументом величина,
|
||
располагалась в начале окна. Например, величина равная
|
||
"0" указывает на начало документа, "1.0"
|
||
на его конец, "0.333" на точку, отстоящую от начала
|
||
документа на одну треть и т.д.</dd>
|
||
|
||
<dt><em>префикс</em> <strong>scroll</strong> <em>число</em>
|
||
<strong>units</strong></dt>
|
||
|
||
|
||
<dd>Сдвигает содержимое окна примитива на <em>число</em>
|
||
единиц. Единицы это порции документа, имеющие смысл для
|
||
документа данного типа (например, символы или строчки для
|
||
текстового примитива). Аргумент <em>число</em> может принимать
|
||
значение "1" (и тогда одна единица должна уйти из
|
||
окна вверх или влево), или "-1" (и тогда одна
|
||
единица должна уйти из окна вниз или вправо).</dd>
|
||
|
||
<dt><em>префикс</em> <strong>scroll</strong>
|
||
<em>число</em><strong>pages</strong></dt>
|
||
|
||
<dd>Содержимое окна примитива должно сдвинуться на
|
||
<em>число</em> страниц. Страницы это порции документа, имеющие
|
||
смысл для документа данного типа; обычно размер порции
|
||
несколько меньше того, что помещается в окне, и поэтому новое
|
||
содержимое окна частично перекрывается со старым. Аргумент
|
||
<em>число</em> может принимать значение "1" (и тогда
|
||
становится видимой следующая страница), или "-1" (и
|
||
тогда становится видимой предыдущая страница).</dd>
|
||
</dl>
|
||
|
||
<h2><a name=СИНТАКСИС_КОМАНДЫ></a>СИНТАКСИС КОМАНДЫ</h2>
|
||
|
||
<p>В младших версиях Tk (до 4.0) команды примитива
|
||
<strong>set</strong> и <strong>get</strong> имели другой вид. В
|
||
целях совместимости эта форма команд поддерживается и до сих
|
||
пор, однако использовать ее не стоит. Вот старый вид команды:</p>
|
||
|
||
<pre>
|
||
<em>имяПути</em> <strong>set</strong> <em>числоЕдин окноЕдин первЕдин последЕдин</em>
|
||
</pre>
|
||
|
||
<p>Значения всех аргументов команды должны быть целыми
|
||
числами. Аргумент <em>числоЕдин</em> задает общее число единиц в
|
||
документе. <em>Единицы</em> это порции документа, имеющие смысл
|
||
для документа данного типа (например, строчки для текстового
|
||
примитива). Аргумент окноЕдин указывает число единиц,
|
||
одновременно помещающихся в окно ассоциированного
|
||
примитива. Аргументы <em>первЕдин</em> и <em>последЕдин</em>
|
||
указывают индексы первой и последней единиц, находящихся в окне
|
||
в текущий момент (ноль указывает на первую единицу объекта).</p>
|
||
|
||
<p>В старом синтаксисе команда <strong>get</strong>
|
||
возвращала список из четырех целых чисел значений аргументов
|
||
последней выполненной команды примитива set.</p>
|
||
|
||
<p>В старом синтаксисе команды, генерируемые примитивом линейки,
|
||
также имеют другой вид:</p>
|
||
|
||
<pre>
|
||
префикс единица
|
||
</pre>
|
||
|
||
<p>Аргумент <em>единица</em> представляет собой целое число,
|
||
указывающее, что должно появляться вверху или слева в окне
|
||
ассоциированного примитива. Этот аргумент интерпретируется так
|
||
же, как и аргументы <em>первЕдин</em> и <em>последЕдин</em>
|
||
команды примитива <strong>set</strong>.</p>
|
||
|
||
<p>Последняя выполненная команда примитива set определяет, следует
|
||
ли использовать старый синтаксис. Если ее аргументы два
|
||
вещественных числа, то в дальнейшем будет использоваться новый
|
||
синтаксис, а если четыре целых то старый.</p>
|
||
|
||
<h2><a name=ПРИВЯЗКИ></a>ПРИВЯЗКИ</h2>
|
||
|
||
<p>При создании линейки прокрутки Tk автоматически создает
|
||
привязки класса, определяющие следующее поведение примитива по
|
||
умолчанию. В случае, если имеются различия в поведении
|
||
вертикальной и горизонтальной линеек, описание поведения
|
||
горизонтальной приводится в скобках.</p>
|
||
|
||
<ul>
|
||
|
||
<li>При нажатии клавиши 1 "Мыши" на стрелке 1
|
||
(<strong>arrow1</strong>) содержимое окна ассоциированного
|
||
примитива сдвигается вниз (вправо) на одну единицу. Если
|
||
клавишу не отпускать, то сдвиг автоматически повторяется.</li>
|
||
|
||
<li>При нажатии клавиши 1 "Мыши" на полосе 1
|
||
(<strong>trough1</strong>) содержимое окна ассоциированного
|
||
примитива сдвигается вниз (вправо) на один экран. Если клавишу
|
||
не отпускать, то сдвиг автоматически повторяется.</li>
|
||
|
||
<li>Если нажать клавишу 1 на движке, то движок можно
|
||
тащить. Если значение параметра jump истина, то содержимое
|
||
окна не меняется, пока не отпущена клавиша
|
||
"Мыши".</li>
|
||
|
||
<li>При нажатии клавиши 1 "Мыши" на полосе 2
|
||
(<strong>trough2</strong>) содержимое окна ассоциированного
|
||
примитива сдвигается вверх (влево) на один экран. Если клавишу
|
||
не отпускать, то сдвиг автоматически повторяется.</li>
|
||
|
||
<li>При нажатии клавиши 1 "Мыши" на стрелке 2
|
||
(<strong>arrow2</strong>) содержимое окна ассоциированного
|
||
примитива сдвигается вверх (влево) на одну единицу. Если
|
||
клавишу не отпускать, то сдвиг автоматически повторяется.</li>
|
||
|
||
<li>Если нажать клавишу 2 на полосе или на движке, то содержимое
|
||
окна переходит в положение, указанное курсором "Мыши" ; если
|
||
тащить курсор при нажатой клавише 2, то содержимое окна
|
||
движется вслед за курсором. Нажатие клавиши 2 на стрелках
|
||
приводит к тому же результату, что и нажатие клавиши 1.</li>
|
||
|
||
<li>Если клавиша 1 нажимается при нажатой клавише
|
||
<strong>Control</strong>, то в окне появляется начало
|
||
документа (если курсор "Мыши" находится на стрелке 1
|
||
или полосе 1) или его конец (если курсор находится на стрелке
|
||
2 или полосе 2). При других положениях курсора такое нажатие
|
||
на клавиши не приводит ни к каким действиям.</li>
|
||
|
||
<li>В вертикальных линейках прокрутки нажатие на клавиши
|
||
<strong>Up</strong> и <strong>Down</strong> приводят к такому
|
||
же результату, что и щелчок "Мыши" на стрелках вверх
|
||
и вниз соответственно. В горизонтальных линейках нажатие на
|
||
эти клавиши не вызывает никаких действий.</li>
|
||
|
||
<li>В вертикальных линейках прокрутки нажатие на клавиши
|
||
<strong>Control-Up</strong> и <strong>Control-Down</strong>
|
||
приводят к такому же результату, что и щелчок "Мыши"
|
||
на верхней и нижней полосках линейки соответственно. В
|
||
горизонтальных линейках нажатие на эти клавиши не вызывает
|
||
никаких действий.</li>
|
||
|
||
<li>В горизонтальных линейках прокрутки нажатие на клавиши
|
||
<strong>Up</strong> и <strong>Down</strong> приводят к такому
|
||
же результату, что и щелчок "Мыши" на левой и правой
|
||
стрелках соответственно. В вертикальных линейках нажатие на
|
||
эти клавиши не вызывает никаких действий.</li>
|
||
|
||
<li>В горизонтальных линейках прокрутки нажатие на клавиши
|
||
<strong>Control-Up</strong> и <strong>Control-Down</strong>
|
||
приводят к такому же результату, что и щелчок "Мыши"
|
||
на левой и правой полосках линейки соответственно. В
|
||
вертикальных линейках нажатие на эти клавиши не вызывает
|
||
никаких действий.</li>
|
||
|
||
<li>Нажатие на клавиши <strong>Prior</strong> и
|
||
<strong>Next</strong> приводят к такому же результату, что и
|
||
щелчки "Мыши" на полосе 1 и полосе 2
|
||
соответственно.</li>
|
||
|
||
<li>Нажатие на клавишу <strong>Home</strong> приводит к появлению в
|
||
окне начала документа.</li>
|
||
|
||
<li>Нажатие на клавишу <strong>End</strong> приводит к появлению в
|
||
окне конца документа.</li>
|
||
</ul>
|
||
|
||
</body>
|
||
</html>
|
||
|