126 lines
5.4 KiB
HTML
126 lines
5.4 KiB
HTML
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
|
||
<html>
|
||
<head>
|
||
<title>focus</title>
|
||
</head>
|
||
<body>
|
||
<h1>focus</h1>
|
||
|
||
<p>Управление фокусом ввода.</p>
|
||
|
||
|
||
<h2><a name="СИНТАКСИС"></a>СИНТАКСИС</h2>
|
||
|
||
<pre>
|
||
<strong>focus</strong>
|
||
<strong>focus</strong> <em>окно</em>
|
||
<strong>focus</strong> <em>параметр арг арг ...</em>
|
||
</pre>
|
||
|
||
<h2><a name="ОПИСАНИЕ"></a>ОПИСАНИЕ</h2>
|
||
|
||
<p>Команда <strong>focus</strong> используется для управления
|
||
фокусом ввода Tk. В любой момент времени одно из окон на каждом
|
||
экране находится в фокусе ввода; всякое событие нажатия или
|
||
отпускания клавиши интерпретируются в этом окне. Обычно
|
||
переключение фокуса между окнами верхнего уровня на экране
|
||
осуществляется менеджером окон. Например, некоторые менеджеры
|
||
окон автоматически переключают фокус на окно верхнего уровня,
|
||
как только на него попадает курсор "Мыши"; другие устанавливают
|
||
фокус только при щелчке на окне. Обычно менеджер окон
|
||
устанавливает фокус только на окнах верхнего уровня, а
|
||
переключением фокуса между подчиненными окнами занимается
|
||
конкретное приложение.</p>
|
||
|
||
<p>Для каждого верхнего уровня Tk запоминает одно окно в фокусе
|
||
(последнего наследника данного верхнего уровня, в которое попал
|
||
фокус); когда менеджер окон переключает фокус на данный верхний
|
||
уровень, Tk автоматически устанавливает его на запомненное
|
||
окно. Внутри конкретного верхнего уровня Tk использует явное
|
||
моделирование фокуса по умолчанию. Обычно перемещение курсора
|
||
"Мыши" без изменения верхнего уровня не приводит к переключению
|
||
фокуса; переключение происходит, лишь если его запросил примитив
|
||
(например, в результате щелчка по кнопке "Мыши" ) или если
|
||
пользователь нажал, например, клавишу <strong>Tab</strong>.
|
||
</p>
|
||
|
||
<p>Неявная модель фокусировки создается процедурой <strong>Tcl
|
||
tk_focusFollowsMouse;</strong> она меняет параметры конфигурации
|
||
Tk таким образом, чтобы фокус устанавливался на окно при
|
||
попадании на него курсора "Мыши".Процедуры
|
||
<strong>Tcl</strong> <strong>tk_focusNext</strong> и
|
||
<strong>tk_focusPrev</strong> устанавливают порядок переключения фокуса
|
||
между окнами верхнего уровня. Эти процедуры определяют, помимо
|
||
прочего, привязки по умолчанию к клавишам <strong>Tab</strong> и
|
||
<strong>Shift-Tab</strong>.</p>
|
||
|
||
<p>Команда <strong>focus</strong> может принимать одну из
|
||
следующих форм:</p>
|
||
|
||
<dl>
|
||
|
||
<dt> <strong>focus</strong></dt>
|
||
|
||
<dd>Возвращает имя пути окна в фокусе на дисплее, содержащем
|
||
главное окно приложения, или пустую строку, если никакое окно
|
||
данного приложения не находится в фокусе. Замечание: дисплей
|
||
лучше указать явно с помощью параметра
|
||
<strong>-displayof</strong> (см.ниже); в этом случае команда
|
||
сможет работать и в приложениях, использующих несколько
|
||
дисплеев.</dd>
|
||
|
||
<dt><strong>focus</strong> <em>окно</em></dt>
|
||
|
||
<dd>Если одно из окон данного приложения находится в фокусе на
|
||
дисплее окна, то команда устанавливает фокус ввода на
|
||
<em>окно</em> и возвращает пустую строку. Если же у приложения
|
||
не было фокуса ввода на дисплее окна, то окно будет запомнено
|
||
как окно в фокусе для данного верхнего уровня. При попадании
|
||
фокуса на данный верхний уровень в очередной раз Tk установит
|
||
его на окно. Если аргументом является пустая строка, то
|
||
команда не выполняет никаких действий.</dd>
|
||
|
||
<dt> <strong>focus -displayof</strong> <em>окно</em></dt>
|
||
|
||
<dd>Возвращает имя <em>окна</em> в фокусе на дисплее, содержащем
|
||
окно. Если <em>окно</em> в фокусе на дисплее окна не
|
||
принадлежит данному приложению, то команда возвращает пустую
|
||
строку.</dd>
|
||
|
||
<dt> <strong>focus -force</strong> <em>окно</em></dt>
|
||
|
||
<dd>Устанавливает <em>окно</em> в фокус на дисплее окна, даже
|
||
если у приложения нет фокуса ввода на этом дисплее. Эту
|
||
команду следует использовать экономно или отказаться от его
|
||
использования совсем. Обычно приложение не должно запрашивать
|
||
для себя фокус самостоятельно, дожидаясь пока на него не
|
||
переключит фокус менеджер окон. Если аргументом является
|
||
пустая строка, то команда не выполняет никаких действий.</dd>
|
||
|
||
<dt> <strong>focus -lastfor</strong> <em>окно</em></dt>
|
||
|
||
<dd>Возвращает имя <em>окна</em> , последним получившим фокус
|
||
ввода среди всех окон того же верхнего уровня, что и
|
||
окно. Если ни на какое из окон данного верхнего уровня фокус
|
||
не устанавливался или если окно, на которое фокус
|
||
устанавливался последним, удалено, то команда возвращает имя
|
||
верхнего уровня. Возвращаемое значение является именем окна,
|
||
на котором будет установлен фокус ввода при следующей передаче
|
||
фокуса на данный верхний уровень менеджером окна.</dd>
|
||
</dl>
|
||
|
||
<h2><a name="ОСОБЕННОСТИ_РЕАЛИЗАЦИИ"></a>ОСОБЕННОСТИ РЕАЛИЗАЦИИ</h2>
|
||
|
||
<p>При получении фокуса ввода внутренним окном Tk фактически не
|
||
устанавливает X фокус на это окно. X ведет себя таким образом,
|
||
что фокус сохранится на окне верхнего уровня, которому
|
||
подчиняется окно с фокусом. Однако Tk создает события FocusIn и
|
||
FocusOut в точности, как если бы X фокус был на внутреннем
|
||
окне. Такой подход порождает ряд трудностей при фактическом
|
||
переключении X фокуса; то, что X фокус установлен на данный
|
||
верхний уровень, незаметно, если не запрашивать X сервер
|
||
непосредственно из C программы.
|
||
</p>
|
||
</body>
|
||
</html>
|