projman/hlp/ru/tk/menu.html
2018-02-05 17:23:37 +03:00

931 lines
64 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!DOCTYPE html PUBLIC -//W3C//DTD HTML 4.01 Transitional//EN>
<html>
<head>
<title>menu</title>
</head>
<body>
<h1>menu</h1>
<p>Создание примитива меню и управление им.</p>
<h2><a name=СИНТАКСИС></a>СИНТАКСИС</h2>
<pre>
<strong>menu</strong> <em>имяПути</em> ?<em>параметры</em>?
</pre>
<h2><a name=СТАНДАРТНЫЕАРАМЕТРЫ></a>СТАНДАРТНЫЕ ПАРАМЕТРЫ</h2>
<ul>
<li><strong>-activebackground</strong></li>
<li><strong>-activeborderwidth</strong></li>
<li><strong>-activeforeground</strong></li>
<li><strong>-background</strong></li>
<li><strong>-borderwidth</strong></li>
<li><strong>-cursor</strong></li>
<li><strong>-disabledforeground</strong></li>
<li><strong>-font</strong></li>
<li><strong>-foreground</strong></li>
<li><strong>-relief</strong></li>
<li><strong>-takefocus</strong></li>
</ul>
<p>Подробное описание этих параметров приведено в разделе <a
href=options.html><strong>options</strong></a>.</p>
<h2><a name=ДОПОЛНИТЕЛЬНЫЕАРАМЕТРЫ_ПРИМИТИВА></a>ДОПОЛНИТЕЛЬНЫЕ ПАРАМЕТРЫ ПРИМИТИВА</h2>
<table>
<tr><td>Имя параметра:</td><td><strong>-postcommand</strong></td></tr>
<tr><td>Имя в Базе:</td><td><strong>postCommand</strong></td></tr>
<tr><td>Класс в Базе:</td><td><strong>PostCommand</strong></td></tr>
</table>
<p>Задает команду Tcl, которая должна выполняться при каждом
выводе меню. Эта команда выполняется командой примитива
<strong>post</strong> непосредственно перед выводом меню. В
версии 8.0 операционной системы Macintosh и в Windows все
команды системы меню выполняются перед выводом меню. Это
объясняется ограничениями, накладываемыми конкретными системами
управления меню данных платформ.</p>
<table>
<tr><td>Имя параметра:</td><td><strong>-selectcolor</strong></td></tr>
<tr><td>Имя в Базе:</td><td><strong>selectColor</strong></td></tr>
<tr><td>Класс в Базе:</td><td><strong>Background</strong></td></tr>
</table>
<p>Задает цвет индикатора при выделении входа меню,
представляющего собой защелкивающуюся кнопку или
переключатель.</p>
<table>
<tr><td>Имя параметра:</td><td><strong>-tearoff</strong></td></tr>
<tr><td>Имя в Базе:</td><td><strong>tearOff</strong></td></tr>
<tr><td>Класс в Базе:</td><td><strong>TearOff</strong></td></tr>
</table>
<p>Принимает булевское значение, указывающее, должен ли вверху
меню быть ключ отрыва. Если значение параметра истина, то ключ
отрыва имеет номер ноль, а нумерация последующих входов в меню
начинается с единицы.</p>
<table>
<tr><td>Имя параметра:</td><td><strong>-tearoffcommand</strong></td></tr>
<tr><td>Имя в Базе:</td><td><strong>tearOffCommand</strong></td></tr>
<tr><td>Класс в Базе:</td><td><strong>TearOffCommand</strong></td></tr>
</table>
<p>Если значение этого параметра не пустая строка, то оно задает
команду, которая должна выполняться при каждом отрыве от меню. В
действительности выполняемая команда состоит из указанной
строки, за которой следуют имя меню и имя окна меню отрыва
(отделенные от строки команды и друг от друга пробелами). Если,
например, параметр имеет значение &quot;<strong>a
b</strong>&quot; и в результате отрыва от меню
<strong>.x.y</strong> должно быть создано новое меню
<strong>.x.tearoff1</strong>, то будет выполнена команда
&quot;<strong>.a b .x.y .x.tearoff1</strong>&quot;.</p>
<table>
<tr><td>Имя параметра:</td><td><strong>-title</strong></td></tr>
<tr><td>Имя в Базе:</td><td><strong>title</strong></td></tr>
<tr><td>Класс в Базе:</td><td><strong>Title</strong></td></tr>
</table>
<p>Строка значение параметра задает имя окна, создаваемого при
отрыве от данного меню. Если значением параметра служит NULL, то
именем окна станет либо имя кнопки меню, либо содержимое
элемента каскада, из которого выполняется данное меню.<br>
<table>
<tr><td>Имя параметра:</td><td><strong>-type</strong></td></tr>
<tr><td>Имя в Базе:</td><td><strong>type</strong></td></tr>
<tr><td>Класс в Базе:</td><td><strong>Type</strong></td></tr>
</table>
<p>Параметр может принимать одно из значений
<strong>menubar</strong>, <strong>tearoff</strong> или
<strong>normal</strong>; это значение устанавливается при
создании меню. При изменении значения меняется строка,
возвращаемая конфигурационной базой данных, однако это не
оказывает влияния на поведение примитива меню. Это свойство
используется механизмом клонирования и обычно не применяется за
пределами библиотеки Tk.</p>
<h2><a name=ВВЕДЕНИЕ></a>ВВЕДЕНИЕ</h2>
<p>Команда <strong>menu</strong> создает новое окно (заданное
аргументом <em>имяПути</em>) и превращает его в примитив
меню. Детали изображения меню, такие как его цвета и шрифты,
задаются с помощью описанных выше дополнительных параметров в
командной строке или в базе данных параметров. Команда
<strong>menu</strong> возвращает имя пути нового окна. В момент
выполнения команды не должно быть окна с именем
<em>имяПути</em>, однако его непосредственный предок должен
существовать.
<p>Меню представляет собой примитив, предназначенный для вывода
совокупности однострочных входов, разбитых на несколько колонок
(быть может, одну). Входы бывают различных типов и имеют
соответственно различные свойства. Входы различных типов могут
содержаться в одном и том же меню. Вход меню (menu entry) совсем
не то же самое, что примитив поля ввода (entry). Более того,
вход меню не является отдельным примитивом все вместе они
образуют примитив меню.</p>
<p>При выводе вход меню может содержать до трех различных
полей. Главное поле представляет собой метку входа; оно содержит
строку текста, изображение или двуцветное изображение в
зависимости от значения параметров входа
<strong>-label</strong>, <strong>-bitmap</strong> и
<strong>-image</strong>. Если для данного входа задан параметр
<strong>-accelerator</strong>, то справа от метки появляется
второе текстовое поле. Этот параметр обычно описывает
совокупность клавиш, нажатие на которые приводит к тому же
результату, что и выбор данного входа в меню. Третье поле
представляет собой <em>индикатор</em>. Индикатор применяется
только для защелкивающихся входов или переключателей. Он
указывает, выделен или нет данный вход, и располагается слева от
строки входа.</p>
<p>При обычном использовании вход становится активным (при этом
меняется вид строки), если на нем расположен курсор Мыши. Если
клавишу .Мыши. в таком положении отпустить, то вход будет
выполнен. Результат выполнения зависит от типа входа. Подробное
описание результатов приведено ниже при описании конкретных
типов входов.</p>
<p>Входы могут быть отключены (disabled); изображение такого входа
тускнеет. Привязки меню по умолчанию блокируют активизацию и
выполнение команды для отключенного входа. Отключенный вход
может быть снова подключен, после чего его вновь можно
активизировать и выполнять соответствующую команду.</p>
<p>При изменении активного входа в меню в нем происходит
виртуальное событие
&lt;&lt;<strong>MenuSelect</strong>&gt;&gt;. В результате из
меню можно запросить активный вход и предпринять какие-либо
действия (например, вывести соответствующую контекстно-зависимую
подсказку).</p>
<h2><a name=КОМАНДНЫЕ_ВХОДЫ></a>КОМАНДНЫЕ ВХОДЫ</h2>
<p>Наиболее распространенным типом входа в меню является командный
вход, который ведет себя подобно примитиву кнопки. При запуске
командного входа выполняется команда Tcl, заданная параметром
<strong>-command</strong>.</p>
<h2><a name=ВХОДЫРАЗДЕЛИТЕЛИ></a>ВХОДЫ-РАЗДЕЛИТЕЛИ</h2>
<p>Разделитель представляет собой вход, предназначенный для вывода
горизонтальной разделительной черты. Разделитель нельзя сделать
активным или выполнить, никакого поведения разделителя,
отличного от вывода черты не предусмотрено.</p>
<h2><a name=ЗАЩЕЛКИВАЮЩИЕСЯ_ВХОДЫ></a>ЗАЩЕЛКИВАЮЩИЕСЯ ВХОДЫ</h2>
<p>Защелкивающийся вход ведет себя подобно защелкивающейся
кнопке. При щелчке на таком входе происходит переключение из
выделенного состояния в невыделенное и обратно. В выделенном
состоянии в некоторую глобальную переменную (указанную
параметром <strong>-variable</strong>) заносится значение,
фиксированное параметром <strong>-onvalue</strong>; при отмене
выделения в эту глобальную переменную заносится другое значение,
фиксированное параметром <strong>-offvalue</strong>. Слева от
метки защелкивающегося входа изображается
квадратик-индикатор. Если вход выделен, то центральная часть
индикатора окрашивается в цвет, указанный параметром
<strong>-selectcolor</strong> для входа; в противном случае цвет
индикатора совпадает с цветом фона меню. Если для данного входа
задано значение параметра <strong>-command</strong>, то это
значение интерпретируется как команда Tcl всякий раз при
выделении входа.</p>
<h2><a name=ВХОДЫПЕРЕКЛЮЧАТЕЛИ></a>ВХОДЫ-ПЕРЕКЛЮЧАТЕЛИ</h2>
<p>Вход-переключатель ведет себя подобно примитиву
переключателя. Входы переключателя разбиты на группы, причем в
каждой группе выделенным может оказаться только один вход. При
выделении конкретного входа в некоторую глобальную переменную
(указанную параметром <strong>-variable</strong>) заносится
значение, фиксированное параметром <strong>-value</strong>. В
результате этого действия автоматически отменяется предыдущее
выделение в той же группе. Любое изменение значения переменной,
связанной с входом, автоматически приводит к отмене
существующего выделения. Разбиение входов-переключателей на
группы задается значениями связанных с ними переменных: два
входа с одинаковыми значениями переменной принадлежат одной
группе. Слева от метки входа-переключателя изображается ромб
индикатора. Если вход выделен, то центральная часть индикатора
окрашивается в цвет, указанный параметром
<strong>-selectcolor</strong> для входа; в противном случае цвет
индикатора совпадает с цветом фона меню. Если для данного входа
задано значение параметра <strong>-command</strong>, то это
значение интерпретируется как команда Tcl всякий раз при
выделении входа.</p>
<h2><a name=КАСКАДНЫЕ_ВХОДЫ></a>КАСКАДНЫЕ ВХОДЫ</h2>
<p>Каскадному входу отвечает новое меню (заданное параметром
<strong>-menu</strong>). Каскадные входы позволяют строить
ниспадающие меню. Команда примитива <strong>postcascade</strong>
позволяет изобразить ассоциированное меню непосредственно рядом
с каскадным входом или удалить выведенное меню. Для обеспечения
корректности переключения меню необходимо, чтобы меню,
ассоциированное с входом, было непосредственным потомком того
меню, элементом которого данный вход является.</p>
<p>Каскадный вход выводит ассоциированное меню с помощью команды
Tcl вида:</p>
<dl>
<dt><em>меню</em> <strong>post</strong> <em>x y</em><br></dt>
<dd>где <em>меню</em> представляет собой имя пути
ассоциированного меню, а <em>x</em> и <em>y</em> это
координаты верхнего правого угла окна каскадного входа
относительно корневого окна. В системе Unix меню нижнего
уровня стирается с помощью команды Tcl.</dd>
<dt><em>меню</em> <strong>unpost</strong></dt>
<dd>где <em>меню</em> представляет собой имя пути
ассоциированного меню. На других платформах стирание меню
осуществляется их собственными средствами.</dd>
</dl>
<p>Если для данного входа задано значение параметра
<strong>-command</strong>, то это значение интерпретируется как
команда Tcl всякий раз при выделении входа. В системе Windows
данная возможность не поддерживается.</p>
<h2><a name=ВХОДЫ_КЛЮЧИ_ОТРЫВА></a>ВХОДЫ КЛЮЧИ ОТРЫВА</h2>
<p>Ключ отрыва появляется в верхней части меню, если параметр
<strong>tearOff</strong> имеет значение истина. В отличие от
входов других типов его нельзя создать командой примитива
<strong>add</strong> или удалить командой примитива
<strong>delete</strong>. При создании ключа отрыва он
изображается в виде пунктирной горизонтальной черты в верхней
части окна. Привязки по умолчанию создают при щелчке на ключе
отрыва оторванную копию меню и всех подчиненных ему меню.</p>
<h2><a name=ЛИНЕЙКА_МЕНЮ></a>ЛИНЕЙКА МЕНЮ</h2>
<p>Любое меню можно использовать в качестве полосы меню для окна
верхнего уровня (синтаксис см. в описании команды
<strong>toplevel</strong> ). В системе Macintosh каскадные
элементы меню появляются в полосе меню в верхней части окна, как
только соответствующее окно верхнего уровня оказывается поверх
остальных окон. В системах Windows и Unix эти элементы меню
изображаются в полосе меню в верхней части окна. Поведение меню
определяется особенностями интерфейса каждой из платформ. Для
каждого меню, используемого в качестве полосы меню, создается
его копия (clone menu). Подробное описание приведено ниже (см.
&quot;<a href=menu.html#КЛОНЫ>Клоны</a>&quot;).</p>
<h2><a name=СПЕЦИАЛЬНЫЕ_МЕНЮ_В_ЛИНЕЙКЕ></a>СПЕЦИАЛЬНЫЕ МЕНЮ В ЛИНЕЙКЕ</h2>
<p>Некоторые меню в полосе меню будут обрабатываться особым
образом. В системе Macintosh обеспечен доступ к специальным меню
Apple и Help. В каждом окне системы Windows обеспечен доступ к
меню Windows System. В системе X Windows предоставляется
специальное меню подсказки, выравненное вправо. Во всех случаях
эти меню создаются посредством команды, имя которой состоит из
имени команды меню в полосе меню, к которому приписывается имя
специального меню. Так, для полосы меню с именем .menubar на
Macintosh именами специальных меню будут
<strong>.menubar.apple</strong> и
<strong>.menubar.help</strong>; в Windows
<strong>.menubar.system</strong>; в X Windows именем меню
подсказки будет <strong>.menubar.help</strong>.</p>
<p>Встречая меню Apple в системе Macintosh, Tk выводит его первые
элементы на экран всякий раз, когда окно, содержащее полосу меню
оказывается поверх остальных окон. Это меню является первым,
которое видит пользователь, а его заголовком служит логотип
Apple. После всех Tk-определенных элементов следует разделитель,
за которым идут все элементы из папки пользователя Apple Menu
Items. Так как используемая System процедура определения меню
отлична от используемой в Tk и API системы не поддерживают всех
возможностей меню Tk, в заголовке меню выводится только текст
заголовка. Никаких дополнительных сведений, изображений,
двуцветных изображений или цветов не выводится. Кроме того, ключ
отрыва имеет вид &quot;TearOff&quot;.</p>
<p>Встречая меню Help в системе Macintosh, Tk добавляет содержимое
этого меню к стандартному меню подсказки в правой части
пользовательской полосы меню всякий раз, когда пользовательская
полоса меню оказывается поверх остальных окон. Первые элементы
меню берутся из Apple. Аналогично меню Apple возможности вывода
элементов меню ограничены системой.</p>
<p>Встречая меню System в системе Windows, Tk добавляет содержимое
этого меню к системному меню, к которому привязана данная полоса
меню. В этом меню имеется картинка, изображающая клавишу
пробела; ее можно запустить с помощью &quot;Мыши&quot; или нажав
клавиши <strong>Alt+Spacebar</strong>. Ограничения Windows API
не позволяют вывести в системном меню различные шрифты, цвета,
изображения или двуцветные изображения, а также ключи
отрыва.</p>
<p>Встречая меню Help в системе X Windows, Tk делает его последним
в полосе меню и выравнивает по правому краю.</p>
<h2><a name=КЛОНЫ></a>КЛОНЫ</h2>
<p>При использовании меню в качестве полосы меню в окне верхнего
уровня, а также при отрыве меню создается его копия. Копия сама
является примитивом меню, но она непосредственный потомок
исходного меню. Изменения конфигурации исходного меню
распространяются и на копию. Кроме того, все каскады, на которые
есть указатели, также копируются, что обеспечивает корректное
переключение меню. Копии уничтожаются, если удаляется ключ
отрыва или полоса меню, а также при уничтожении оригинала.</p>
<h2><a name=КОМАНДАРИМИТИВА></a>КОМАНДА ПРИМИТИВА</h2>
<p>Команда <strong>menu</strong> создает новую команду Tcl с
именем <em>имяПути</em>. С помощью этой команды можно выполнять
различные операции над примитивом. Ее общий вид:</p>
<pre>
имяПути параметр ?арг арг ...?
</pre>
<p><em>Параметр</em> и <em>арг</em>ументы уточняют поведение команды.</p>
<p>Одним из аргументов многих команд примитива меню служит
указатель входа в меню, над которым следует произвести данную
операцию. Такие указатели называются <em>индекс</em>ами; они
могут иметь один из следующих видов:</p>
<dl>
<dt><em>число</em></dt>
<dd>Задает номер входа. Самый верхний вход имеет номер 0,
следующий за ним номер 1 и т.д.</dd>
<dt> <strong>active</strong> </dt>
<dd>Задает вход, который активен в настоящий момент. Если
активного входа нет, то это значение параметра эквивалентно
значению <strong>none</strong>. Слово <strong>active</strong>
нельзя сокращать.</dd>
<dt> <strong>end</strong></dt>
<dd>Указывает самый нижний вход в меню. Если в меню нет ни
одного входа, то это значение параметра эквивалентно значению
<strong>none</strong>. Слово <strong>end</strong> нельзя
сокращать.</dd>
<dt> <strong>last</strong></dt>
<dd> Совпадает с <strong>end</strong>.</dd>
<dt> <strong>none</strong> </dt>
<dd>Указывает на &quot;никакой&quot; вход. Чаще всего
используется совместно с параметром <strong>activate</strong>
для дезактивации всех активных входов в меню. Слово
<strong>none</strong> нельзя сокращать.</dd>
<dt> @<em>число</em></dt>
<dd>В этом случае <em>число</em> интерпретируется как значение
y-координаты в окне меню; указывает на вход, ближайший к
данной y-координате. Так, например,
&quot;<strong>@0</strong>&quot; указывает на самый верхний
вход в окне.</dd>
<dt> <em>образец</em> </dt>
<dd>Если индекс не подходит ни под один из указанных видов, то
используется поиск индекса по образцу. Сравнение метки входа с
<em>образцом</em> выполняется последовательно сверху вниз,
пока не встретится подходящая метка. При сравнении
используются правила <strong>Tcl_StringMatch</strong>.</dd>
</dl>
<p>Примитивы меню допускают следующие команды:</p>
<dl>
<dt><em>имяПути</em> <strong>activate</strong> <em>индекс</em></dt>
<dd>Делает активным вход, указанный параметром <em>индекс</em> и
соответственно меняет вид строки входа на экране. Всякий вход,
бывший активным в момент выполнения команды,
деактивизируется. Если <em>индекс</em> имеет
значение<strong>none</strong> или если указанный этим
параметром вход отключен, то по окончании работы команды в
меню не будет активных входов. Возвращает пустую строку.</dd>
<dt><em>имяПути</em> <strong>add</strong> <em>тип</em>
?<em>параметр значение параметр значение</em>?</dt>
<dd><p>Добавляет новый вход на верхушку меню. Аргумент
<em>тип</em> задает вид нового входа; <em>он</em> может
принимать значения <strong>cascade</strong>,
<strong>checkbutton</strong>, <strong>command</strong>,
<strong>radiobutton</strong> (эти значения допускают
однозначные сокращения). Дополнительные аргументы могут
задавать значения следующих параметров:</p>
<dl>
<dt><strong>-activebackground</strong> <em>значение</em></dt>
<dd>Задает цвет фона для вывода данного входа в активном
состоянии. Если <em>значением</em> служит пустая строка
(как, например, по умолчанию), то в качестве цвета фона
берется значение параметра
<strong>activeBackground</strong> для всего меню. Если
значение переменной <strong>tk_strictMotif</strong>
требует проверки согласования со стандартом Motif, то
значение данного параметра игнорируется и вместо него
используется значение параметра
<strong>-background</strong>. Для входа-разделителя и
ключа отрыва данный параметр недоступен.</dd>
<dt><strong>-activeforeground</strong> <em>значение</em></dt>
<dd>Задает цвет переднего плана для вывода данного входа в
активном состоянии. Если <em>значением</em> служит пустая
строка (как, например, по умолчанию), то в качестве цвета
фона берется значение параметра
<strong>activeForeground</strong> для всего меню.Для
входа-разделителя и ключа отрыва данный параметр
недоступен.</dd>
<dt> <strong>-accelerator</strong> <em>значение</em></dt>
<dd>Задает строку, которую следует выводить в правой части
входа. Обычно описывает комбинацию клавиш, на
которые следует нажать, чтобы выполнить те же действия,
что и при обращении к данному входу. Для входа-разделителя
и ключа отрыва данный параметр недоступен.</dd>
<dt> <strong>-background</strong> <em>значение</em> </dt>
<dd>Задает цвет фона для вывода данного входа в нормальном
(не активном и не отключенном) состоянии. Если
<em>значением</em> служит пустая строка (как, например, по
умолчанию), то в качестве цвета фона берется значение
параметра <strong>background</strong> для всего меню. Для
входа-разделителя и ключа отрыва данный параметр
недоступен.</dd>
<dt> <strong>-bitmap</strong> <em>значение</em></dt>
<dd>Задает двуцветное изображение, выводимое в меню вместо
текстовой метки. Может принимать любое значение,
воспринимаемое командой
<strong>Tk_GetBitmap</strong>. Данный параметр подавляет
параметр <strong>-label</strong>, однако если его
значением является пустая строка, то в окне выводится
текстовая метка. Параметр <strong>-image</strong>, если он
задан, подавляет параметр <strong>-bitmap</strong>. Для
входа-разделителя и ключа отрыва данный параметр
недоступен.</dd>
<dt> <strong>-columnbreak</strong> <em>значение</em></dt>
<dd>Если <em>значение</em> параметра равно &quot;0&quot;, то новый
вход выводится после предыдущего входа. Если значение
равно &quot;1&quot;, то новый вход выводится вверху нового столбца
меню.</dd>
<dt> <strong>-command</strong> <em>значение</em></dt>
<dd>Задает команду Tcl, которую следует выполнить при вызове
данного входа. Для входа-разделителя и ключа отрыва данный
параметр недоступен.</dd>
<dt> <strong>-font</strong> <em>значение</em></dt>
<dd>Задает шрифт, используемый при выводе метки входа и
строки горячих клавиш. Если значением параметра является
пустая строка (как, например, по умолчанию), то
используется значение параметра <strong>font</strong>для
всего меню. Для входа-разделителя и ключа отрыва данный
параметр недоступен.</dd>
<dt> <strong>-foreground</strong> <em>значение</em></dt>
<dd>Задает цвет переднего плана для вывода данного входа в
нормальном (не активном и не отключенном) состоянии. Если
<em>значением</em> служит пустая строка (как, например, по
умолчанию), то в качестве цвета фона берется значение
параметра <strong>foreground</strong> для всего меню. Для
входа-разделителя и ключа отрыва данный параметр
недоступен.</dd>
<dt> <strong>-hidemargin</strong> <em>значение</em> </dt>
<dd>Указывает, следует ли при выводе данного входа выводить
стандартные боковые поля. Такая возможность полезна при
создании различных палитр с картинками (цветовые палитры,
палитры образцов и т.д.). <em>Значение</em> &quot;1&quot;
указывает на то, что поля должны быть спрятаны, при
нулевом значении параметра они используются.</dd>
<dt> <strong>-image</strong> <em>значение</em></dt>
<dd>Задает изображение, выводимое в меню вместо текстовой
метки или двуцветного изображения. Изображение должно быть
создано ранее командой <strong>image create</strong>.
Данный параметр подавляет параметры
<strong>-label</strong>, и <strong>-bitmap</strong>,
однако если его значением является пустая строка, то в
окне выводится текстовая метка или двуцветное
изображение. Для входа-разделителя и ключа отрыва данный
параметр недоступен.</dd>
<dt> <strong>-indicatoron</strong> <em>значение</em></dt>
<dd>Доступно только для защелкивающихся входов и
входов-переключателей. <em>Значение</em> является
булевским и указывает, следует или нет выводить индикатор
входа.</dd>
<dt> <strong>-label</strong> <em>значение</em> </dt>
<dd>Задает текстовую строку, которая служит
меткой-идентификатором входа. Для входа-разделителя и
ключа отрыва данный параметр недоступен.</dd>
<dt> <strong>-menu</strong> <em>значение</em></dt>
<dd>Данный параметр доступен только для каскадных
входов. Задает имя пути подменю, ассоциированного с данным
входом. Подменю должно быть непосредственным потомком
данного меню.</dd>
<dt> <strong>-offvalue</strong> <em>значение</em> </dt>
<dd>Доступен только для защелкивающихся входов. Задает
значение, которое следует записать в переменную входа при
отмене его выделения.</dd>
<dt> <strong>-onvalue</strong> <em>значение</em> </dt>
<dd>Доступен только для защелкивающихся входов. Задает
значение, которое следует записать в переменную входа при
его выделении.</dd>
<dt> <strong>-selectcolor</strong> <em>значение</em> </dt>
<dd>Доступен только для защелкивающихся входов и
входов-переключателей. Задает <em>значение</em>, которое
следует записать в переменную входа при его
выделении.</dd>
<dt> <strong>-selectimage</strong> <em>значение</em> </dt>
<dd>Доступен только для защелкивающихся входов и
входов-переключателей. Задает изображение, которое следует
выводить в поле входа при его выделении (замещает параметр
<strong>-image)</strong>. Изображение должно быть создано
ранее командой<strong>image create</strong>. Если параметр
<strong>-image</strong> не задан, то данный параметр
игнорируется.</dd>
<dt> <strong>-state</strong> <em>значение</em> </dt>
<dd>Задает одно из трех состояний входа:
<strong>normal</strong>, <strong>active</strong> или
<strong>disabled</strong>. В нормальном состоянии при
выводе входа используются значения параметров
<strong>foreground</strong> для всего меню и
<strong>background</strong> для входа или для всего
меню. Обычно вход становится активным при попадании на
него курсора. В активном состоянии при выводе входа
используются значения параметров
<strong>activeForeground</strong> для всего меню и
<strong>activebackground</strong> для входа. В отключенном
(<strong>disabled</strong>) состоянии вход становится
безответным: привязки по умолчанию не позволяют
активизировать его или вызвать соответствующую ему команду
Tcl. При выводе входа в этом случае используются значения
параметров <strong>disabledForeground</strong> для всего
меню и <strong>background</strong> для входа. Для
входа-разделителя данный параметр недоступен.</dd>
<dt> <strong>-underline</strong> <em>значение</em> </dt>
<dd>Задает целочисленный индекс символа в метке, который
следует подчеркнуть. Значение этого индекса используется,
в том числе, привязками по умолчанию для осуществления
переключения с помощью клавиатуры. Значение &quot;0&quot;
указывает на первый символ в строке, &quot;1&quot; на
второй и т.д. Если в поле входа выводится изображение или
двуцветное изображение, то данный параметр
игнорируется. Для входа-разделителя и ключа отрыва данный
параметр недоступен.</dd>
<dt> <strong>-value</strong> <em>значение</em> </dt>
<dd>Доступен только для входа-переключателя. Задает
значение, которое следует записать в переменную входа при
его выделении. Если <em>значением</em> параметра является
пустая строка, то в переменную заносится значение
параметра <strong>-label</strong>.</dd>
<dt> <strong>-variable</strong> <em>значение</em></dt>
<dd>Доступен только для защелкивающегося входа и
входа-переключателя. Задает имя глобальной переменной,
которую следует установить при выделении входа. Для
защелкивающегося входа значение переменной устанавливается
также при отмене его выделения. Для входа-переключателя
изменение значения переменной приводит к отмене текущего
выделения.</dd>
</dl>
<p>Команда примитива <strong>add</strong> возвращает
пустую строку.</p>
</dd>
<dt><em>имяПути</em> <strong>cget</strong> <em>параметр</em></dt>
<dd>Возвращает текущее значение параметра конфигурации с именем
<em>параметр</em>. <em>Параметр</em>может быть любым из
параметров команды <strong>menu</strong>.</dd>
<dt><em>имяПути</em> <strong>clone</strong> <em>новоеИмяПути</em>
?<em>типКопии</em>?</dt>
<dd>Создает копию текущего меню с именем
<em>новоеИмяПути</em>. Копия является отдельным
самостоятельным меню, однако любые изменения в ней приводят к
таким же изменениям оригинала и наоборот. Аргумент
<em>типКопии</em> может принимать значения <strong>normal</strong>,
<strong>menubar</strong> и <strong>tearoff</strong>. Команду не
следует исполнять вне библиотеки Tk. Подробную информацию
см. &quot;<a href=#КЛОНЫ>Клоны</a>&quot;.</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>. В этом случае команда
возвращает пустую строку. <em>Параметр</em> может быть любым
из параметров команды <strong>menu</strong>.</dd>
<dt><em>имяПути</em> <strong>delete</strong> <em>индекс1</em>
?<em>индекс2</em>?</dt>
<dd>Удаляет все входы между входами, указанными аргументами
<em>индекс1</em> и <em>индекс2</em>, включая оба эти входа. Ключи
отрыва при этом не удаляются для их удаления следует поменять
значение параметра <strong>tearOff</strong>.</dd>
<dt><em>имяПути</em> <strong>entrycget</strong> <em>индекс
параметр</em></dt>
<dd>Возвращает текущее значение параметра конфигурации для
входа, заданного аргументом
<em>индекс</em>. <em>Параметр</em>может принимать любые
значения, воспринимаемые командой примитива
<strong>add</strong>.</dd>
<dt><em>имяПути</em> <strong>entryconfigure</strong>
<em>индекс</em> ?<em>параметры</em>?</dt>
<dd>Команда аналогична команде <strong>configure</strong>;
отличие состоит в том, что она относится к параметрам
отдельного входа, тогда как команда <strong>configure</strong>
применима к параметрам меню в целом. <em>Параметры</em> могут
принимать любые значения, воспринимаемые командой примитива
<strong>add</strong>. Если <em>параметры</em> заданы, то им
присваиваются вновь заданные и команда возвращает пустую
строку. Если <em>параметры</em> не заданы, то команда
возвращает список текущих значений всех параметров для каждого
из входов, указанных аргументом <em>индекс</em> (формат списка
приведен в <strong>Tk_ConfigureInfo</strong>).</dd>
<dt> <em>имяПути</em> <strong>index</strong>
<em>индекс</em></dt>
<dd>Команда возвращает числовое значение индекса, заданного
аргументом <em>индекс</em> или значение <strong>none</strong>,
если <em>значением</em> аргумента было
<strong>none</strong>.</dd>
<dt><em>имяПути</em> <strong>insert</strong> <em>индекс тип</em>
?<em>параметр значение параметр значение</em>?</dt>
<dd>Команда аналогична команде примитива <strong>add</strong>;
отличие состоит в том, что команда <strong>insert</strong>
вставляет новый вход непосредственно перед входом, на который
указывает аргумент <em>индекс</em>, а не в конец меню. Если в
меню есть ключ отрыва, то вставка входов перед ним
невозможна.</dd>
<dt><em>имяПути</em> <strong>invoke</strong> <em>индекс</em></dt>
<dd>Выполняет действие, ассоциированное с данным входом
меню. Подробное описание выполняемых действий приведено выше
при описании конкретных типов входов. Если с данным входом
ассоциирована какая-нибудь команда Tcl, то команда
<strong>invoke</strong> возвращает результат выполнения этой
команды Tcl. В противном случае результатом служит пустая
строка. Замечание: при исполнении данной команды меню не
пропадает автоматически это результат действия привязок по
умолчанию перед исполнением команды
<strong>invoke</strong>.</dd>
<dt> <em>имяПути</em> <strong>post</strong> <em>x y</em> </dt>
<dd>Обеспечивает вывод меню на экран в месте с координатами
<em>x</em> и <em>y</em> относительно корневого окна. При
необходимости эти координаты корректируются так, чтобы меню на
экране было видно. Обычно команда возвращает пустую
строку. Если задан параметр <strong>postCommand</strong>, то
его значение интерпретируется как Tcl скрипт, который и
исполняется перед выполнением команды <strong>post</strong>; в
этом случае команда примитива <strong>post</strong> возвращает
результат данного скрипта Tcl. Если при выполнении скрипта
возникла ошибка, то <strong>post</strong> возвращает сообщение
об этой ошибке и меню не выводится.</dd>
<dt> <em>имяПути</em> <strong>postcascade</strong>
<em>индекс</em> </dt>
<dd>Выводит подменю, вызываемое каскадным входом, указанным
аргументом <em>индекс</em>, и стирает ранее выведенное
подменю. Если аргумент <em>индекс</em> не указывает на
каскадный вход или если меню с именем <em>имяПути</em> не
выведено, то команда<strong>postcascade</strong> не производит
никаких действий за исключением стирания ранее выведенных
подменю.</dd>
<dt><em>имяПути</em> <strong>type</strong> <em>индекс</em></dt>
<dd>Возвращает тип входа, указанного аргументом <em>индекс.</em>
Этот тип задается аргументом <em>тип</em> при создании входа
командой примитива <strong>add</strong> (например,
<strong>command</strong>, <strong>separator</strong> или
<strong>tearoff</strong> для ключа отрыва).</dd>
<dt> <em>имяПути</em> <strong>unpost</strong> </dt>
<dd>Стирает окно с экрана. Если было выведено каскадное меню
нижнего уровня, то стирает это меню. Возвращает пустую
строку. На платформах Windows и Macintosh эта команда не
работает, так как там имеются собственные системы управления
окнами.</dd>
<dt> <em>имяПути</em> <strong>yposition</strong> <em>индекс</em>
</dt>
<dd>Возвращает десятичное значение y-координаты в окне меню
верхнего пиксела поля входа, заданного аргументом
<em>индекс</em>.</dd>
</dl>
<h2><a name=КОНФИГУРАЦИИ_МЕНЮ></a>КОНФИГУРАЦИИ МЕНЮ</h2>
<p>Привязки по умолчанию обеспечивают четыре различных способа
использования меню: </p>
<dl>
<dt><strong>Ниспадающие меню в полосе меню</strong></dt>
<dd>Наиболее часто встречающийся случай. Сначала создается
примитив меню, который станет полосой меню. Затем к этому меню
добавляются каскадные входы, описывающие нужные ниспадающие
меню. Затем создаются все ниспадающие меню. Когда все это
проделано, нужно задать значение параметра
<strong>-menu</strong> в команде примитива верхнего
уровня. Подробное описание <a
href=toplevel.html><strong>toplevel</strong></a>.</dd>
<dt><strong>Ниспадающие меню в кнопках меню</strong></dt>
<dd>Это альтернативный способ создания полосы меню. Сначала
создается примитив кнопки меню для каждого меню верхнего
уровня (обычно цепочка кнопок располагается последовательно в
полосе меню окна). Кроме того следует создать все меню
верхнего уровня и подчиненные им меню и связать их вместе с
помощью параметра <strong>-menu</strong> в кнопках меню и
каскадных входах меню. Меню верхнего уровня должно быть
непосредственным потомком кнопки меню, а каждое подменю должно
быть непосредственным потомком меню, которое на него
ссылается. После того, как это сделано, привязки по умолчанию
позволяют пользователю переходить от одного меню к другому и
обращаться к дереву меню через кнопку меню.</dd>
<dt><strong>Всплывающие меню</strong></dt>
<dd>Всплывающие меню обычно выводятся при нажатии кнопки
&quot;Мыши&quot; или клавиши на клавиатуре. Сначала создаются
всплывающие меню и все каскадные подменю, затем в нужный
момент времени следует вызвать процедуру
<strong>tk_popup</strong>, в результате чего будет выведено
меню верхнего уровня.</dd>
<dt><strong>Меню-переключатели с кнопкой</strong></dt>
<dd>Меню-переключатель состоит из кнопки и связанного с ней
меню, которое позволяет выбрать одну из нескольких
возможностей. Описатель выбранной возможности выводится в
кнопке и в глобальной переменной запоминается соответствующее
значение. Для создания меню-переключателей используется
процедура <strong>tk_optionMenu</strong>.</dd>
<dt><strong>Отрывные меню</strong></dt>
<dd>Отрывное меню создается при исполнении входа ключа отрыва в
верхней части имеющегося меню. Привязки по умолчанию создают
копию исходного меню и выводят ее в виде окна верхнего
уровня. Оторванное меню ведет себя точно так же, как и
исходное.</dd>
</dl>
<h2><a name=ПАРАМЕТРЫ_ПО_УМОЛЧАНИЮ></a>ПАРАМЕТРЫ ПО УМОЛЧАНИЮ</h2>
<p>При создании меню Tk автоматически создает параметры класса,
определяющие следующее поведение примитива по умолчанию: </p>
<p>При попадании курсора &quot;Мыши&quot; в меню вход, на котором
находится курсор, становится активным; при перемещении курсора
по меню соответственно меняется и активный вход.</p>
<p>Если курсор &quot;Мыши&quot; покидает меню, то все входы в нем
деактивизируются за исключением случая, когда курсор
перемещается в каскадное подменю.</p>
<p>При отпускании клавиши &quot;Мыши&quot; на меню активный вход
(если таковой имеется) исполняется. При этом меню стирается за
исключением случая, когда это оторванное меню.</p>
<p>Нажатие на клавиши <strong>Space</strong> или
<strong>Return</strong> приводят к исполнению активного входа и
стиранию меню.</p>
<p>Если одна из букв в поле входа подчеркнута с помощью параметра
<strong>-underline</strong>, то нажатие на эту букву (или ее
эквивалент на верхнем или нижнем регистре) приводит к исполнению
входа и стиранию меню.</p>
<p>Нажатие на клавишу <strong>Escape</strong> приводит к отмене
текущего выделения. Меню при этом стирается, если только это не
оторванное меню.</p>
<p>Нажатие на клавиши <strong>Up</strong> или
<strong>Down</strong> приводит к активизации входа, примыкающего
к текущему активному входу сверху или снизу. Если достигнут
конец меню, то происходит перескок на противоположный его
конец.</p>
<p>Нажатие на клавишу <strong>Left</strong> приводит к переходу на
соседнее слева меню. Если текущее меню представляет собой
каскадное подменю, то это каскадное подменю стирается и текущим
входом в меню становится каскадный вход в его непосредственном
предке. Если текущее меню представляет собой меню верхнего
уровня, выведенное кнопкой меню, то текущая кнопка меню
стирается и выводится соседняя слева кнопка меню. В остальных
случаях нажатие на эту клавишу не приводит ни к какому
результату. Порядок кнопок меню слева направо определяется их
порядком в стеке: Tk считает нижнюю кнопку меню (первой попавшую
в стек) самой левой.</p>
<p>Нажатие на клавишу <strong>Right</strong> приводит к переходу
на соседнее справа меню. Если текущим является каскадный вход,
то выводится соответствующее каскадное подменю и текущий вход
становится первым в этом подменю. В противном случае, если
текущее меню было выведено кнопкой меню, то текущая кнопка меню
стирается, а вместо нее выводится соседняя с ней справа кнопка
меню.</p>
<p>Отключенные входы меню остаются безответными: их нельзя сделать
активными и они не реагируют на нажатие и отпускание клавиш
&quot;Мыши&quot;.</p>
<p>Определяя новые привязки к отдельным примитивам или
переопределяя привязки класса, поведение меню можно
изменить.</p>
<p>В настоящее время использование базы данных параметров для
задания значений параметров входов не допускается.</p>
</body>
</html>