Please enable JavaScript to view this site.

Создание прикладных библиотек  > Рекомендации по созданию прикладных библиотек 

Пример обработки динамического запроса при создании панели инструментов

Scroll

В качестве примера используется процесс указания точки и угла Placement.

Процесс содержит системную панель, элементы управления которой позволяют задать два параметра - точку и угол. Можно выделить 3 состояния процесса:

указание точки,

указание угла,

все задано.

Если процесс переходит в состояния все задано, то возможны два варианта.

Автоматически запускается создание объекта.

Процесс ожидает ручного нажатия кнопки Создать объект st_reduc. При этом никакие функции CallBack не выполняются. В API за это отвечает свойство IProcessParam::AutoReduce,

Таким образом, создавая панель, содержащую кнопку Автосоздание объекта st_aredc с возможностью управлять ее состоянием (нажата/отжата) через ButtonUpdate, необходимо в первый раз синхронизировать состояния кнопки и флага IProcessParam::AutoReduce.

Предположим, что процесс запускается с нажатой кнопкой автосоздания. Необходимо задать значение IProcessParam::AutoReduce, равное TRUE. Поля задания точки и угла на панели расфиксированы. Первый щелчок мыши в поле чертежа фиксирует точку, второй фиксирует угол и по флагу IProcessParam::AutoReduce запускается создание объекта. После этого поля задания точки и угла расфиксируются, то есть процесс переходит в начальное состояние (благодаря флагу IProcessParam::AutoReduce=TRUE).

В случае нажатия кнопки автосоздания в процессе, событие придет в библиотеку, и инвертирует флаг IProcessParam::AutoReduce в самом процессе автоматически.

Пользовательская панель может содержать только элементы управления, а не поля задания параметров. На построения они не влияют, так как таблица состояний статическая и описывается до запуска процесса. Таким образом, если процесс перешел в состояние все задано, то есть значения всех параметров установлены и на пользовательской панели можно только отрабатывать изменение состояния элементов управления, никакие CallBack - функции не выполняются.

У процесса указания точки Cursor аналогичная схема работы, но задаваемый параметр всего один и первый же щелчок мыши в поле чертежа переводит процесс в состояние все задано.

Для имитации работы процесса Cursor с постоянным присутствием вызовов CallBack'ов необходимо выполнить следующие действия:

1. На старте процесса задать значение IProcessParam::AutoReduce, равное TRUE.

2. В событии ButtonClick на нажатия кнопки автосоздания всегда возвращать FALSE, то есть не давать процессу инвертировать значение IProcessParam::AutoReduce.

3. Управлять состоянием кнопки в ButtonUpdate по собственному усмотрению.

4. Всю логику работы реализовать в функции обратной связи CallBack, то есть, если заданы не все значения параметров, то возвращать 1, а если все, то 0.

Подразделы:

(отсутствуют)

© ООО «АСКОН-Системы проектирования», 2024. Все права защищены. | Единая телефонная линия: 8-800-700-00-78