<!DOCTYPE html PUBLIC -//W3C//DTD HTML 4.01 Transitional//EN> <html> <head> <title>entry</title> </head> <body> <h1>entry</h1> <p>Создание примитива поля ввода текста и управление им.</p> <h2><a name=СИНТАКСИС></a>СИНТАКСИС</h2> <pre> <strong>entry</strong> <em>имяПути параметры</em> </pre> <h2><a name=СТАНДАРТНЫЕ_ПАРАМЕТРЫ></a>СТАНДАРТНЫЕ ПАРАМЕТРЫ</h2> <ul> <li>-background</li> <li>-borderwidth</li> <li>-cursor</li> <li>-exportselection</li> <li>-font</li> <li>-foreground</li> <li>-highlightbackground</li> <li>-highlightcolor</li> <li>-highlightthickness</li> <li>-inserborderwidth</li> <li>-insertbackground</li> <li>-insertofftime</li> <li>-insertontime</li> <li>-insertwidth</li> <li>-justify</li> <li>-relief</li> <li>-selectbackground</li> <li>-selectborderwidth</li> <li>-selectforeground</li> <li>-takefocus</li> <li>-textvariable</li> <li>-xscrollcommand</li> </ul> <p>Подробное описание этих параметров приведено в <a href=options.html><strong>options</strong></a>.</p> <h2><a name=ДОПОЛНИТЕЛЬНЫЕ_ПАРАМЕТРЫ_ПРИМИТИВА></a>ДОПОЛНИТЕЛЬНЫЕ ПАРАМЕТРЫ ПРИМИТИВА</h2> <table> <tr><td>Имя параметра:</td><td><strong>-show</strong></td></tr> <tr><td>Имя в Базе:</td><td><strong>show</strong></td></tr> <tr><td>Класс в Базе:</td><td><strong>Show</strong></td></tr> </table> <p>Если этот параметр задан, то истинное содержимое поля не выводится на экране. Вместо этого каждый символ текста заменяется первым символом значения параметра <strong>-show</strong>, скажем *. Такая возможность полезна, например, при вводе в поле пароля. Если символы поля ввода были выделены и скопированы в другом месте, то выводиться будет скопированная информация, а не истинное содержимое поля ввода.</p> <table> <tr><td>Имя параметра:</td><td><strong>-state</strong></td></tr> <tr><td>Имя в Базе:</td><td><strong>state</strong></td></tr> <tr><td>Класс в Базе:</td><td><strong>State</strong></td></tr> </table> <p>Задает одно из двух состояний поля ввода: <strong>normal</strong> или <strong>disabled</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>Задает желаемую ширину окна поля ввода в виде целого числа. Если введенное значение не положительно, то ширина поля устанавливается такой, чтобы в него в точности помещался текст его текущего значения.</p> <h2><a name=ОПИСАНИЕ></a>ОПИСАНИЕ</h2> <p>Команда <strong>entry</strong> создает новое окно (задаваемое аргументом <em>имяПути</em>) и превращает его в примитив поля ввода. Детали изображения кнопки, такие как ее цвета, шрифт и объемный вид, задаются с помощью описанных выше дополнительных параметров. Команда <strong>entry</strong> возвращает аргумент <em>имяПути</em>. В момент выполнения этой команды не должно существовать окна с именем <em>имяПути</em>, но должно существовать его родительское окно.</p> <p>Поле ввода представляет собой примитив, предназначенный для вывода одной строки текста и редактирования ее с помощью описываемых ниже команд примитива, которые по большей части сводятся к нажатию клавиш на клавиатуре и действиям с "Мышью". При создании поля ввода его строка текста пуста. Часть содержимого поля можно выделить, совершив действия, описываемые ниже. Экспорт выделенного текста (см. описание параметра <strong>exportSelection</strong>) осуществляется по стандартному протоколу X11 для выделений; выделения в поле ввода имеют тип <strong>STRING</strong>. Поля ввода также подчиняются стандартным правилам Tk обращения с фокусом ввода. Когда поле ввода находится в фокусе ввода, в нем изображается <em>курсор ввода</em> , который указывает, где будут вставляться вводимые символы.</p> <p>Поля ввода могут работать и с длинными строками, которые не помещаются полностью в окне примитива. С помощью описываемых ниже команд содержимое окна можно изменить. Поля ввода взаимодействуют с полосами прокрутки с помощью стандартного механизма <strong>xScrollCommand</strong> (подробно механизм взаимодействия описан при описании параметра <strong>xScrollCommand</strong>). Кроме того, они обеспечивают возможность сканирования (см. описание ниже).</p> <h2><a name=КОМАНДА_ПРИМИТИВА></a>КОМАНДА ПРИМИТИВА</h2> <p>Команда <strong>entry</strong> создает новую команду Tcl с именем <em>имяПути</em>. С помощью этой команды можно выполнять различные операции над примитивом. Ее общий вид </p> <pre> <strong>имяПути</strong> <em>параметр арг арг ...</em> </pre> <p><em>Параметр</em> и <em>арг</em>ументы уточняют поведение команды.</p> <p>Аргументами многих команд примитива поля ввода служат индексы. Индекс задает положение конкретного символа в строке поля ввода. Он может иметь один из следующих видов: <dl> <dt><em>число</em></dt> <dd>Задает номер символа в строке. Первый символ строки имеет номер "0"</dd> <dt><strong>anchor</strong></dt> <dd>Задает опорную точку выделения, которая используется командами примитива <strong>select from</strong> и <strong>select adjust</strong>.<dd> <dt><strong>end</strong></dt> <dd>Указывает положение символа непосредственно после последнего символа строки в поле ввода. Указание этого индекса равносильно указанию длины строки.</dd> <dt><strong>insert</strong></dt> <dd>Указывает на символ, находящийся непосредственно за курсором ввода.</dd> <dt><strong>sel.first</strong><dt> <dd>Указывает на первый из выделенных символов. Эта форма индекса недопустима, если выделение не расположено в окне поля ввода.</dd> <dt><strong>sel.last</strong></dt> <dd>Указывает на последний из выделенных символов. Эта форма индекса недопустима, если выделение не расположено в окне поля ввода.</dd> <dt>@<em>число</em></dt> <dd>В этом случае <em>число</em> трактуется как x-координата в окне поля ввода; указывает на символ с этой x-координатой. Например, "<strong>@0</strong>" указывает на самый левый символ в окне ввода.</dd> </dl> <p>Вместо любой из указанных форм можно использовать ее сокращение, например, "<strong>e</strong>" или "<strong>sel.f</strong>". Как правило, значения индексов, выходящие за пределы допустимых, заменяются ближайшими допустимыми значениями.</p> <p>Примитивы поля ввода допускают следующие команды:</p> <dl> <dt><em>имяПути</em> <strong>bbox</strong> <em>индекс</em></dt> <dd>Возвращает список из четырех элементов, описывающий клетку, занимаемую символом, указанным параметром <em>индекс</em>. Первые два элемента списка задают x- и y-координаты верхнего левого угла клетки (в пикселях по отношению к примитиву), последние два элемента ширину и высоту символа (в пикселях). Клетка может находиться за пределами видимой части окна.</dd> <dd><em>имяПути</em> <strong>cget</strong> <em>параметр</em></dd> <dd>Возвращает текущее значение параметра конфигурации с именем <em>параметр</em>. <em>Параметр</em>может быть любым из параметров команды <strong>entry</strong>.</dd> <dt><em>имяПути</em> <strong>configure</strong> <em>параметр значение параметр значение ...</em> </dt> <dd>Запрашивает значения параметров конфигурации примитива или изменяет их. Если <em>параметр</em> не указан, то возвращает список, содержащий значения всех допустимых в <em>имениПути</em> параметров (формат списка описан в <strong>Tk_ConfigureInfo</strong>). Если <em>параметр</em> задан, а его новое <em>значение</em> нет, то команда возвращает часть полного списка, относящуюся к указанному параметру. Если заданы одна или несколько пар <em>параметр-значение</em>, то указанным <em>параметр</em>ам примитива присваиваются новые <em>значения</em>. В этом случае команда возвращает пустую строку. <em>Параметр</em> может быть любым из параметров команды <strong>entry</strong>.</dd> <dt><em>имяПути</em> <strong>delete</strong> <em>первый последний</em></dt> <dd>Удаляет один или несколько символов в поле ввода. Аргумент <em>первый</em> является индексом первого удаляемого символа, а аргумент <em>последний</em> представляет собой индекс символа, следующего непосредственно за последним удаляемым символом. По умолчанию значение аргумента <em>последний</em> на единицу больше значения аргумента <em>первый</em>, т.е. удаляется один символ. Команда возвращает пустую строку.</dd> <dt><em>имяПути</em> <strong>get</strong></dt> <dd>Возвращает строку содержимое поля ввода.</dd> <dt><em>имяПути</em> <strong>icursor</strong> <em>индекс</em></dt> <dd>Устанавливает курсор ввода непосредственно перед символом, заданным аргументом <em>индекс</em>. Возвращает пустую строку.</dd> <dt><em>имяПути</em> <strong>index</strong> <em>индекс</em></dt> <dd>Команда возвращает числовое значение индекса, заданного аргументом <em>индекс</em>.</dd> <dt><em>имяПути</em> <strong>insert</strong> <em>индекс строка</em> </dt> <dd>Вставляет символы <em>строки</em> непосредственно перед символом, на который указывает аргумент <em>индекс</em>. Команда возвращает пустую строку.</dd> <dt><em>имяПути</em> <strong>scan</strong> <em>параметр аргументы</em></dt> <dd><p>Осуществляет сканирование поля ввода. В зависимости от значения <em>параметр</em>а может иметь две различные формы:</p> <dl> <dt><em>имяПути</em> <strong>scan mark</strong> <em>x</em> </dt> <dd>Запоминает значение координаты x и текущее состояние окна поля ввода; используется в сочетании с последующими командами <strong>scan dragto</strong>. Обычно эта команда связана с нажатием клавиши "Мыши" на примитиве. Возвращает пустую строку.</dd> <dt><em>имяПути</em> <strong>scan dragto</strong> <em>x</em></dt> <dd>Вычисляет разность между значением своего аргумента x и значением аргумента x последней выполненной на данном примитиве команды <strong>scan mark</strong>. Затем переносит изображение примитива на расстояние, в 10 раз превышающее вычисленную разность. Команда обычно связана с событиями движения "Мыши" в примитиве и используется для скоростного перетаскивания поля ввода в окне. Возвращает пустую строку.</dd> </dl> </dd> <dt><em>имяПути</em> <strong>selection</strong> <em>параметр аргумент</em> </dt> <dd><p>Производит размещение выделения в поле ввода. Команда может иметь одну из описанных ниже форм.</p> <dl> <dt><em>имяПути</em> <strong>selection adjust</strong> <em>индекс</em></dt> <dd>Определяет ближайший к указанному аргументом <em>индекс</em> положению край выделения и устанавливает новое значение этого края в <em>индекс</em> (т.е. элемент с индексом <em>индекс</em> входит в выделение, а соседний с ним нет). Противоположный край выделения становится опорной точкой для последующих команд <strong>select to</strong>. Если в текущий момент выделение в поле отсутствует, то команда заводит новое выделение, содержащее символы между указанным аргументом <em>индекс</em> и последней установленной опорной точкой выделения. Возвращает пустую строку.</dd> <dt><em>имяПути</em> <strong>selection clear</strong></dt> <dd> Очищает выделение в данном примитиве. Если выделение отсутствует, то не производит никаких действий. Возвращает пустую строку.</dd> <dt><em>имяПути</em> <strong>selection from</strong> <em>индекс</em> </dt> <dd>Устанавливает опорную точку выделения непосредственно перед символом, заданным аргументом <em>индекс</em>. Текущего выделения команда не меняет. Возвращает пустую строку.</dd> <dt><em>имяПути</em> <strong>selection present</strong></dt> <dd>Возвращает "1", если в поле ввода имеется выделение, в противном случае возвращает "0".</dd> <dt><em>имяПути</em> <strong>selection range</strong> <em>начало конец</em> </dt> <dd>Выделяет символы между символом, указанным аргументом <em>начало, и символом,</em> непосредственно предшествующим указанному аргументом <em>конец.</em> Если символ, указанный аргументом <em>конец,</em> совпадает с символом, указанным аргументом <em>начало</em>, или предшествует ему, то выделение становится пустым.</dd> <dt><em>имяПути</em><strong>selection to</strong> <em>индекс</em> </dt> <dd>Если символ, указанный аргументом <em>индекс</em>, предшествует опорной точке выделения, то команда выделяет все символы между опорным символом выделения и символом, указанным аргументом <em>индекс</em>, не включая опорный символ. Если аргумент индекс указывает на опорный символ, то команда ничего не делает. Если символ, указанный аргументом <em>индекс</em>, следует за опорной точкой выделения, то команда выделяет все символы между опорным символом выделения и символом, указанным аргументом <em>индекс</em>, не включая этот символ. Опорный символ устанавливается последней выполненной на данном примитиве командой <strong>select from</strong> или <strong>select adjust</strong>. Если в текущий момент выделение в поле отсутствует, то команда заводит новое выделение, содержащее символы между указанным аргументом <em>индекс</em> и последней установленной опорной точкой выделения. Команда возвращает пустую строку.</dd> </dl> </dd> <dt><em>имяПути</em> <strong>xview</strong> <em>аргументы</em></dt> <dd><p>Используется для запроса горизонтального положения информации, выведенной в поле ввода, и изменения этого положения. Команда может иметь одну из следующих форм:</p> <dl> <dt><em>имяПути</em> <strong>xview</strong></dt> <dd>Возвращает список, состоящий из двух элементов. Каждый из элементов списка представляет собой вещественное число, заключенное между нулем и единицей; эта пара чисел описывает видимый в окне горизонтальный интервал. Так, например, если первое число равно "2", а второе "6", то 20% текста в поле ввода оказывается невидимой слева от окна, в окне выводится 40% информации, и еще 40% оказывается невидимой справа от окна. Те же значения передаются полосе прокрутки через параметр <strong>-xscrollcommand</strong>.</dd> <dt><em>имяПути</em> <strong>xview</strong> <em>индекс</em></dt> <dd>Переносит строку в поле ввода так, что самым левым символом в окне становится символ, указанный аргументом <em>индекс</em>.</dd> <dt><em>имяПути</em> <strong>xview moveto</strong> <em>число</em></dt> <dd>Передвигает область видимости так, что слева от окна остается невидимой часть поля ввода, указанная аргументом <em>число</em>. <em>Число</em> должно быть заключено между "0" и "1".</dd> <dt><em>имяПути</em> <strong>xview scroll</strong> <em>количество что</em></dt> <dd>Сдвигает выводимый в окне текст вправо или влево в соответствии со значениями аргументов. <em>Количество</em> должно быть целым числом, аргумент <em>что</em> может принимать значения <strong>units</strong> или <strong>pages</strong> или быть сокращением одного из этих слов. Если аргумент <em>что</em> принимает значение <strong>units</strong>, то сдвиг происходит на <em>количество</em> символов средней ширины. Если значением аргумента <em>что</em> является <strong>pages</strong>, то сдвиг осуществляется на <em>количество</em> полных экранов. Если <em>количество</em> отрицательно, то видимые символы сдвигаются вправо, в противном случае влево.</dd> </dl> </dd> </dl> <h2><a name=ПРИВЯЗКИ_ПО_УМОЛЧАНИЮ></a>ПРИВЯЗКИ ПО УМОЛЧАНИЮ</h2> <p>При создании поля ввода Tk автоматически создает привязки класса, определяющие поведение примитива по умолчанию. В приводимом ниже описании .слово. есть произвольная непрерывная группа букв, цифр и символов "_" или любой другой одиночный символ. <p>Щелчок клавишей 1 "Мыши" устанавливает курсор ввода непосредственно перед символом, расположенным под курсором "Мыши", устанавливает фокус ввода на данном примитиве и отменяет выделение в нем.</p> <p>Перетаскивание курсора "Мыши" приводит к выделению символов между курсором ввода и конечным положением курсора "Мыши".</p> <p>Двойной щелчок клавишей 1 "Мыши" приводит к выделению слова под курсором "Мыши" и устанавливает курсор ввода перед первым символом этого слова. Перетаскивание "Мыши" после двойного щелчка приводит к выделению группы, состоящей из целых слов.</p> <p>Тройной щелчок клавишей 1 "Мыши" приводит к выделению всего текста в поле ввода и устанавливает курсор ввода перед первым символом текста.</p> <p>Края выделения можно выровнять, если тащить .Мышь. с нажатой клавишей 1 при нажатой клавише <strong>Shift</strong>; в этом случае выравнивается край, ближайший к положению курсора "Мыши" в момент нажатия ее клавиши 1. Если по кнопке щелкнули дважды перед тем, как тащить "Мышь", то выделение выравнивается относительно концов полных слов.</p> <p>Щелчок по клавише 1 "Мыши" при нажатой клавише Control приводит к установке курсора ввода в поле ввода без изменения текущего выделения.</p> <p>Обычные печатные символы вводятся в месте расположения курсора ввода.</p> <p>Содержимое поле ввода можно перемещать с помощью клавиши 2 "Мыши". Щелчок по клавише 2 "Мыши" и без ее перемещения приводит к копированию выделения в поле ввода в место расположения курсора "Мыши".</p> <p>Если тащить .Мышь. слева или справа от окна поля ввода по направлению от окна при нажатой клавише 1, то в окне автоматически появляется невидимый ранее текст (если в поле со стороны, где .Мышь. покинула окно, есть текст, невидимый в окне).</p> <p>Нажатие на клавиши <strong>Left</strong> или <strong>Right</strong> приводит к перемещению курсора ввода на один символ влево или вправо; при этом текущее выделение отменяется и устанавливается новая опорная точка выделения. Если нажатие на клавиши <strong>Left</strong> или <strong>Right</strong> происходит при нажатой клавише <strong>Shift</strong>, то курсор ввода перемещается и пройденный им символ добавляется к выделению. Нажатие на клавиши <strong>Control-Left</strong> и <strong>Control-Right</strong> приводит к перемещению курсора ввода на полное слово, сочетания <strong>Control-Shift-Left</strong> и <strong>Control-Shift-Right</strong> еще и расширяют выделение. Сочетания <strong>Control-b</strong> и <strong>Control-f</strong> играют ту же роль, что и <strong>Left</strong> и <strong>Right</strong>, а сочетания <strong>Meta-b</strong> и <strong>Meta-f</strong> соответственно ту же роль, что и <strong>Control-Shift-Left</strong> и <strong>Control-Shift-Right</strong>.</p> <p>Нажатие на клавишу <strong>Home</strong> (или <strong>Control-a</strong>) приводит к перемещению курсора к началу текста с отменой существующих выделений. <strong>Shift-Home</strong> перемещает курсор к началу текста и доводит до этого места выделение.</p> <p>Нажатие на клавишу <strong>End</strong> (или <strong>Control-e</strong>) приводит к перемещению курсора в конец текста с отменой существующих выделений. <strong>Shift-End</strong> перемещает курсор в конец текста и доводит до этого места выделение.</p> <p>Нажатие на клавишу <strong>Select</strong> (или <strong>Control-Space</strong>) устанавливает опорную точку выделения в положение курсора ввода. Текущее выделение при этом не изменяется. Нажатие на клавиши <strong>t-Select</strong> (или <strong>Control-Shift-Space</strong>) доводит выделение до текущего положения курсора ввода (или устанавливает выделение между опорной точкой выделения и текущим положением курсора ввода, если текущее выделение отсутствовало).</p> <p><strong>Control-/</strong> выделяет весь текст в окне.</p> <p><strong>{Control-\}</strong> приводит к отмене текущего выделения.</p> <p>Клавиша <strong>F16</strong>, на многих станциях Sun обозначенная <strong>py</strong>, (или <strong>Meta-w</strong>) копирует выделение в примитиве в карман.</p> <p>Клавиша <strong>F20</strong>, на многих станциях Sun обозначенная <strong>Cut</strong>, (или <strong>Control-w</strong>) копирует выделение в примитиве в карман и удаляет выделение. Если выделение в примитиве отсутствует, то нажатие на эти клавиши не приводит ни к каким действиям.</p> <p>Клавиша <strong>F18</strong>, на многих станциях Sun обозначенная <strong>te</strong>, (или <strong>Control-y</strong>) копирует содержимое кармана в место расположения курсора ввода.</p> <p>Нажатие на клавишу <strong>Delete</strong> приводит к удалению выделения. Если выделение отсутствует, то удаляется символ, непосредственно примыкающий к курсору ввода справа.</p> <p>Нажатие на клавишу <strong>BackSpace</strong> (или <strong>Control-h</strong>) приводит к удалению выделения. Если выделение отсутствует, то удаляется символ, непосредственно примыкающий к курсору ввода слева.</p> <p><strong>Control-d</strong> удаляет символ, непосредственно примыкающий к курсору ввода справа.</p> <p><strong>Meta-d</strong> удаляет слово, непосредственно примыкающее к курсору ввода справа.</p> <p><strong>Control-k</strong> удаляет все символы справа от курсора ввода.</p> <p>Если поле ввода отключено указанием значения <strong>disabled</strong> параметра <strong>-state</strong>, то в окне поля по-прежнему можно перемещать текст и производить выделение, однако курсор ввода в окне не появляется и редактирование текста невозможно.</p> <p>Определяя новые привязки к отдельным примитивам или переопределяя привязки класса, поведение полей ввода можно изменить.</p> </body> </html>