Функции управления элементами диалога — КиберПедия 

Наброски и зарисовки растений, плодов, цветов: Освоить конструктивное построение структуры дерева через зарисовки отдельных деревьев, группы деревьев...

Семя – орган полового размножения и расселения растений: наружи у семян имеется плотный покров – кожура...

Функции управления элементами диалога

2021-06-30 50
Функции управления элементами диалога 0.00 из 5.00 0 оценок
Заказать работу

Несколько функций языка 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 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!

0.073 с.