Несколько замечаний к работе механизма уведомлений. Не всякий за-
прос на изменение инициирует дальнейшую цепочку механизма. Если запрос
на изменение, по сути, не меняет состояние объекта, т.е. запрос не приводит
к изменению значений внутренних последующие вызовы не
инициируются. Далее, объект задачи имеет внутренний триггер, запрещаю-
щий или разрешающий выполнять уведомление. В обычном режиме триггер
разрешает регистрацию, однако, при некоторых связанных
к примеру, с загрузкой новой задачи или закрытии текущей этот триггер пе-
реводится в состояние, запрещающее производить уведомление.
Базовым объектом, реализующим этот механизм является
TtaskComponent. Все новые объекты задачи наследуют поведение этого объ-
екта. Однако для всех ранее описанных объектов, к примеру, объектов при-
кладной области, такое решение не подходит, поскольку ObjectPascal не под-
держивает множественного наследования. Объект TtaskComponent наследует
свойства своего родового объекта TcomplexPersistObject и вносит несколько
дополнительных свойств и методов. Список открытых свойств объекта и их
описание приведено в таблице А.6.
Таблица - Список свойств объекта.
Свойство
ChangeNotifyDisabled
Тип
Boolean
TChangeDataEventProc
Описание
Триггер, разрешающий (запрещаю-
щий) уведомление об изменений.
Ссылка на метод класса вызываемый
при уведомлении об изменении.
Ниже приведены методы, введенные в объект:
RegisterChangeData - метод, реализующий стандартный механизм вызо-
ва уведомления об изменении. Если в объекте-потомке необходимо изменить
этот механизм, он должен перегрузить эту метод. В зависимости от действий
пользователя и генерирующихся на их основе событий задача в целом пере-
ходит в одно из предопределенных состояний введенных в перечислимом
типе TtaskStateEnum. Описание состояний и переходов представлено в таб-
лице А.7, их диаграмма представлена на рисунке А.7.
Таблица А.7 - Описание состояний объектов.
Состояние
TsLogExists
TsResultExists
Описание
2
Пользователь вводит или модифицирует данные. Журнал расчета и
результат в этом состоянии недоступны.
Был выполнен расчет параметров устойчивости. В процессе расчета
программа столкнулась с ошибками, из-за которых невозможно сфор-
мировать результат. В этом состоянии доступны редактор данных за-
дачи и журнал расчета.
Был выполнен расчет параметров устойчивости и
журнал расчета и результат.
были сформированы
128