изменений. Части этого механизма, расположенного в объектах задачи уже
были описаны ранее. Здесь приводится весь механизм. Обсуждение будет
вестись на примере GUI-элемента управления Tedit, реализующего ввод тек-
стовой (числовой) информации.
Все изменения сделанные с помощью GUI-элемента Tedit обрабатыва-
ются в момент, когда пользователь выполнил команду смены фокуса - пере-
мещения активности с этого объекта на любой другой. В этом случае эле-
мент Tedit генерирует стандартное событие OnExit. По событию OnExit дан-
ные считываются из буфера Tedit и инициируется вызов метода фиксации
этого изменения в экземпляре объекта TtaskData. Если при фиксации измене-
ния происходит реальное изменение данных этого объекта инициируется це-
почка вызовов приводящая в конечном результате к уведомлению GUI-
компонент об изменении состояния экземпляра задачи TtaskData. Далее вы-
полняется считывание зафиксированного изменения в буфер объекта Tedit.
Последняя операция выполняется по той причине, что данные в TtaskData
имеют ряд свойств регулирующий, к примеру, правила округления данных.
По этой причине, скажем фиксация изменения градуса наклона откоса с зна-
чением 30,967 градусов вызовет реальное изменение наклона на значение
градусов. Именно это значение и должно появится на мониторе пользовате-
ля.
В случае, если фиксация изменения привела к исключительной ситуа-
ции, система подает сигнал, выводит диагностическое сообщение в
строку состояния программы и выделяет цветом GUI-элемент управления с
некорректными данными.
Также следует отметить, что успешная фиксация изменения задачи при-
водит к появлению не только уведомления об изменении, но может также
привести к появлению других уведомлений, к примеру, уведомления об из-
менении состоянии задачи или уведомлению об изменении свойства изме-
няемости задачи.
Полный цикл событий и вызовов приведен ниже на рисунке 8 и демон-
стрирует процесс редактирования азимута откоса.
Сложность и каскадность схемы на указанном рисунке не является свой-
ством присущим механизму, а есть лишь отображение реальной вложенности
понятий проблемной области.
Преимущества приведенной схемы многочисленны, наиболее важными
из них являются:
• Прозрачное взаимодействие с компонентами на любом уровне. Если
нам необходимо изменить объект, мы инициируем изменения этого объекта,
а не вводим искусственные методы на высшем уровне иерархии;
• Гибкость - мы можем регистрировать и обрабатывать события на лю-
бом уровне;
• Отсутствие жесткой иерархии - в данную схему мы можем включить
объекты любых типов. Требования жесткого наследования от какого-либо
единого объекта отсутствуют;
131