Управление состоянием формы через конечный автомат
Взаимодействие пользователя с интерфейсом приводит к изменению состояния формы и её элементов. Элементы отражают текущее состояние формы через свойства: видимости, доступности, оформления, текста заголовка и т.д. Даже при небольшом количестве элементов количество возможных состояний формы может быть достаточно большим. Необходимость учета всех состояний формы порождает сложные алгоритмы настройки элементов. В статье рассматривается алгоритмическое решение перехода к состоянию формы с использованием функционального подхода на основе декларативного описания
- Описание
- Подробнее
Описание
Оглавление
ПОДСИСТЕМА "УПРАВЛЕНИЕ ФОРМОЙ"
Обработчик события "ПриИзменении"
Общая демонстрация. Стенд "УправлениеФормой"
Управление доступностью. Исключение из общего режима "Только просмотр"
Управление видимостью. Стенд "Валютный платеж"
Установка пометки. Стенд "Включение панелей"
Оформление заголовков. Стенд "Гиперссылка"
Введение
Любая форма, даже самая простая, содержит в себе элементы. Если в форме предусмотрено несколько состояний, то каждое из них должно поддерживаться соответствующими состояниями её элементов.
Запрограммировать элементы для всех состояний формы может оказаться нетривиальной задачей. Дело в том, что количество состояний формы может исчисляться десятками (см. Формулу 1. числа состояний n элементов по k состояниям) и необходимость предусмотреть их большое количество приводит к созданию запутанных и сложных алгоритмов перехода.
В типовых решениях можно встретить разные варианты поддержки состояний формы. Как правило выделяется одна процедура и в ней происходит настройка всех элементов для текущего состояния. Возможен также вариант, когда есть выделенная универсальная процедура, которая использует набор процедур для настройки различных групп элементов. В втором случае возможен вариант, когда при изменении состояния формы вызывается не общая процедура, а конкретная, соответствующая группе элементов, настройка которых требуется для перехода в следующее состояние.
Платформа поддерживает также декларативную настройку оформления для табличных элементов. Это великолепная возможность декларативного описания оформления элементов таблицы, которая не требует написания ни строчки кода. К сожалению, для прочих элементов такая возможность не поддерживается.
В предлагаемом решении используется декларативный подход к описанию состояния формы. На основании описания подсистема выполняет настройку свойств элементов формы. В подсистеме используется оптимизация: каждый раз при изменении состояния формы настраиваются только те элементы, состояние которых также было изменено.
