Наброски и зарисовки растений, плодов, цветов: Освоить конструктивное построение структуры дерева через зарисовки отдельных деревьев, группы деревьев...
Семя – орган полового размножения и расселения растений: наружи у семян имеется плотный покров – кожура...
Топ:
Отражение на счетах бухгалтерского учета процесса приобретения: Процесс заготовления представляет систему экономических событий, включающих приобретение организацией у поставщиков сырья...
Характеристика АТП и сварочно-жестяницкого участка: Транспорт в настоящее время является одной из важнейших отраслей народного...
Эволюция кровеносной системы позвоночных животных: Биологическая эволюция – необратимый процесс исторического развития живой природы...
Интересное:
Лечение прогрессирующих форм рака: Одним из наиболее важных достижений экспериментальной химиотерапии опухолей, начатой в 60-х и реализованной в 70-х годах, является...
Что нужно делать при лейкемии: Прежде всего, необходимо выяснить, не страдаете ли вы каким-либо душевным недугом...
Мероприятия для защиты от морозного пучения грунтов: Инженерная защита от морозного (криогенного) пучения грунтов необходима для легких малоэтажных зданий и других сооружений...
Дисциплины:
2021-06-30 | 50 |
5.00
из
|
Заказать работу |
|
|
Несколько функций языка LISP управляют элементами и их действиями. Они позволяют выполнять следующие операции:
· задавать LISP-выражение, выполняемое при выборе элемента и нажатии клавиши ENTER или щелчке левой клавишей мыши (функция action_tile);
· отключать элемент и включать его (функция mode_tile);
· читать текущее содержимое элемента (функция get_tile);
· менять текущее содержимое элемента (функция set_tile);
· читать значение атрибута элемента (функция get_attr);
· связывать с элементом данные пользователя (функция client_data_tile).
Функция action_tile
Функция action_tile задает при помощи LISP-выражения действие, которое нужно выполнить системе AutoCAD при выборе элемента или редактировании его содержимого. Синтаксис функции:
(action_tile <код><выражение>)Аргументы: <код> - строка с кодом элемента, < выражение > - строка с LISP-выражением. Возвращаемое значение - Т.
Большинство элементов диалогового окна являются элементами управления. Для них должны быть описаны действия, выполняемые системой AutoCAD при выборе пользователем этого элемента. Под выбором элемента имеются в виду, в частности, такие события, вызванные пользователем:
· нажатие клавиши Enter;
· щелчок мышью по кнопке Button;
· редактирование содержимого поля edit_box;
· выбор элемента списка list_box или popup_box;
· движение шкалы элемента slider.
Отклик системы на события окна совершается тогда, когда после операции с одним элементом курсор перейдет к другому элементу или пользователь выйдет из диалогового окна с помощью кнопки выхода.
Такое действие для каждого элемента может быть задано с помощью атрибута action DCL -файла. Значением атрибута может быть строка с LISP-выражением (там не должно быть функции command). Другой вариант задания действия - указание LISP-выражения в строке, передаваемой в качестве аргумента функции action_tile. Обращение к этой функции должно быть записано между вызовами функций new_dialog и start_dialog.
|
Действие, заданное с помощью аргумента < выражение > функции action_tile аннулирует действие, заданное значением атрибута action этого элемента в DCL -файле. Действие всегда задается через код элемента. Значение атрибута key передается функции action_tile в качестве аргумента <код>.
LISP- выражение в функции action_tile может использовать значения зарезервированных глобальных переменных со следующими именами:
· $value - текущее значение рассматриваемого элемента;
· $key - код рассматриваемого элемента;
· $reason - тип действия, выполненного над элементом;
· $data - данные элемента, заданные функцией client_data_tile;
· $x и $y - координаты указанной точки внутри изображения.
Примеры:
(action_tile "accept" "(done_dialog)") - действие кнопки выхода;
(action_tile "Test" (strcat "(if (<= (atoi $value) 0))" "(alert \"Отрицательные числа не допускаются!\")")) - проверка значения элемента на отрицательные числа или ноль;
В этом примере длинное LISP- выражение получено сцепкой двух строк. Обратите внимание на то, что внутренние двойные кавычки, необходимые для вызова функции alert, применяются с предшествующим слэшем.
(action_tile "Test" "(setq myTest 1) (saveVars) (done_dialog)")По событию с элементом "Test" выполняется три действия: переменной myTest присваивается значение 1, запускается функция saveVars и закрывается диалоговое окно. Обратите внимание, что и код и выражение всегда берутся в кавычки.
Функция mode_tile
Функция mode_tile изменяет состояние элемента диалога. Синтаксис:
(mode_tile <код><состояние>)Аргументы: <код> - код элемента; <состояние> - целое число от 0 до 4 (см. таблицу). Возвращаемое значение - nil.
Значение | Действие |
0 | Включить элемент |
1 | Выключить элемент (сделать недоступным) |
2 | Выбрать элемент |
3 | Подсветить содержимое элемента |
4 | Включить/выключить подсветку изображения |
При выключении элемента его цвет приглушается. Он становится недоступным для пользователя. Чтобы сделать его вновь доступным, его надо включить.
|
Примеры:
(mode_tile "k1" 1) - выключает элемент с кодом k1;
(mode_tile "k1" 0) - включает элемент с кодом k1.
Функция set_tile
Функция set_tile позволяет менять содержание диалога, заданное атрибутом value.
(set_tile <код><значение>)Аргументы: <код> - код элемента; < значение > - строка с новым значением, присваиваемым атрибуту value данного элемента.
Возвращаемое значение - значение второго аргумента, переданного функции.
Функция get_tile
Функция get_tile читает содержимое элемента диалога (текущее значение атрибута value). Синтаксис:
(get_tile <код>)Аргумент - строка с кодом элемента.
Возвращаемое значение - строка с текущим значением атрибута value.
Функция get_attr
Функция get_attr читает значение атрибута элемента текущего каталога:
(get_attr <код><атрибут>)Аргументы: <код> - строка с кодом элемента, < атрибут > - строка с именем атрибута. Возвращаемое значение - строка со значением атрибута элемента.
Пример:
(get_attr "user" "alignment") - возвратит "centered"
Функция client_data_tile
Функция client_data_tile связывает с элементом диалогового окна строку с пользовательскими данными. Синтаксис:
(client_data_tile <код><данные>)Аргументы: <код> - строка с кодом элемента, <данные> - строка с пользовательскими данными. Возвращаемое значение - nil.
Чтобы обратиться к данным, присоединенным к элементу диалогового окна, нужно прочитать значение переменной $data в функции action_tile. Так можно изменять действие, присвоенное элементу, в зависимости от пользовательских данных.
Пример:
(client_data_tile "user" "2110") - связывает строку 2110 с элементом "user".
Переменные действия
Во время работы диалогового окна система AutoCAD формирует значения глобальных переменных, которые называются переменными действия:
$key, $value, $reason, $data, $x, $y.В них сохраняются некоторые дополнительные данные о состоянии диалогового окна и выполненных в нем действиях пользователя. Переменные используются в LISP-выражениях, задаваемых в качестве второго аргумента функции action_tile. Вне этой функции значения переменных действия не определены.
Пользовательская программа не может изменять значения этих переменных и должна применять их только для чтения. В таблице рассматриваются различные варианты формирования значений переменных действия.
|
Переменная | Значение |
$key | Код элемента (во всех элементах) |
$value | Значение атрибута value во всех элементах. Для поля edit_box - это введенная строка; Для toggle - "1" (включен) или "0" - выключен; Для list_box и popup_list - строка с номером (номерами) выбранных элементов списка или nil, если ни один элемент списка не выбран |
$data | Строка с пользовательскими данными, привязанными к элементу |
Sreason | Для элементов edit_box, list_box, image_button и slider - число с кодом причины прерывания работы с элементом (см. следующую таблицу) |
$x, $y | Координаты в пикселях указанной пользователем точки внутри изображения для элемента image_button |
Примеры:
(action_tile "user" "(setq nam (strcat \ "Пользователь: \" $value))");(action_tile "cldat" "(setq tyg (read $data))"); Значения переменной $reason | |
Значение | Описание |
1 | Обычный вариант действия с элементом, в том числе, пользователь выбрал элемент, нажата клавиша ENTER, а элемент имеет значение true атрибута is_default |
2 | Для поля edit_box: пользователь вышел из поля, но не завершил редактирование (например, нажал клавишу TAB или выбрал другой элемент) |
3 | Для элемента slider: пользователь изменил значение элемента с помощью указателя шкалы, но не завершил ввода |
4 | Для элементов list_box и image_button: пользователь выполнил двойной щелчок. Если multiple_selection=false, то это должно означать окончательный выбор. Если multiple_selection=true, то это должно обрабатываться как обычный выбор (значение 1). |
|
|
Таксономические единицы (категории) растений: Каждая система классификации состоит из определённых соподчиненных друг другу...
Биохимия спиртового брожения: Основу технологии получения пива составляет спиртовое брожение, - при котором сахар превращается...
Опора деревянной одностоечной и способы укрепление угловых опор: Опоры ВЛ - конструкции, предназначенные для поддерживания проводов на необходимой высоте над землей, водой...
Папиллярные узоры пальцев рук - маркер спортивных способностей: дерматоглифические признаки формируются на 3-5 месяце беременности, не изменяются в течение жизни...
© cyberpedia.su 2017-2024 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!