Читайте также: |
|
Тело контекстного меню строится точно так же, как и тело свитка. Локальные переменные, функции и структуры могут определяться внутри него. Доступ из внешнего кода к ним осуществляется так же, как и к переменным определенным внутри свитка. У контекстного меню есть свои элементы интерфейса – пункт, подменю и разделитель. Для них, как и для компонентов, размещаемых на свитке, определяются функции обработчики. Само меню может генерировать только одно событие. Оно происходит, когда меню открывается первый раз, а функция обработчик для него определяется так
on Контекстное_меню open do
Компоненты меню
Пункт меню
Меню состоит из пунктов. Каждый пункт должен быть определен следующим образом
menuItem Имя_переменной Текстовая_строка
checked: Логическое_выражение enabled: Логическое_выражение
filter: Функция
Обязательны только первые два параметра. Первый – имя переменной, которая после определения будет содержать ссылку на созданный пункт меню. Второй – текстовая строка, которая будет выводиться в меню. Параметр checked позволяет установить (значение true) или не устанавливать (false) галочку напротив определяемого пункта меню. Возможность доступа к пункту меню определяется параметром enabled. Значение true соответствует разрешенному пункту, false – недоступному. Последний параметр, filter, должен быть ссылкой на функцию без параметров, которая будет автоматически вызываться при открытии меню. Если она возвращает true, пункт добавляется к меню, в противном случае – нет.
Пункт меню, как и всякий объект имеет свойства. Текст пункта доступен через свойство
Пункт_меню. text
Наличие флажка возле пункта определяется свойством
Пункт_меню. checked
а за возможность пункта отвечает свойство
Пункт_меню. enabled
При выборе пользователем пункта меню генерируется событие
on Пункт_меню picked do
Разделитель
Разделитель представляет собой горизонтальную черту, которая призвана разделять собой логические группы пунктов меню. В силу своей достаточно пассивной роли, разделитель не имеет свойств и событий, а определяется следующим образом
separator Имя_переменной filter: Функция
В первый параметр, как обычно заносится ссылка на созданный объект, а второй, необязательный, является функцией-фильтром. Его применение полностью аналогично работе с одноименным параметром для пункта меню.
Подменю
Подменю описывает новое меню, которое откроется, если Вы выберете некий пункт меню. Оно определяется следующим образом
subMenu Текстовая_строка filter: Функция
Первый параметр – текст пункта, при выборе которого раскроется подменю. Второй параметр необязателен и представляет собой уже знакомую нам функцию фильтр. После такого определения должно следовать тело подменю, которое состоит из пунктов, разделителей и новых подменю. Как видите, подменю является скорее синтаксическим объектом, поэтому в его определении нет даже переменной. В качестве примера можно привести определение меню, в котором есть и разделители и подменю.
rcmenu MyRCmenu
(-- Функции-фильтры
-- Наличие выделенных объектов
fn flt_objects = ($!= undefined)
-- Принадлежность выделенных объектов к классу фигур
fn flt_shapes = (isKindOf $ Shape)
-- Пункты меню
menuItem mi_cs "Cast Shadows" checked:false
menuItem mi_rs "Receive Shadows" checked:false
-- разделитель
separator sep2 filter:flt_objects
-- Подменю добавляется, если есть выделенные объекты
subMenu "Modifiers" filter:flt_objects
(
-- Пункты подменю для объектов
menuItem mi_bend "Bend"
menuItem mi_twist "Twist"
-- Разделитель и подменю только для фигур
separator sep3 filter:flt_shapes
subMenu "Shape" filter:flt_shapes
(
menuItem mi_extrude "Extrude"
menuItem mi_EditSpline "Edit Spline"
)
)
-- Здесь должны быть обработчики событий
)
registerRightClickMenu MyRcmenu -- Регистрация меню
Дата добавления: 2015-10-31; просмотров: 78 | Нарушение авторских прав
<== предыдущая страница | | | следующая страница ==> |
Индикатор процесса | | | Макро скрипты |