Версия: 1.1
Описание
- Расширение PropConds является развитием идеи, заложенной в действии «Управление видимостью/доступностью компонентов».
- Главное отличие: в стандартном действии условие было общим для всех компонентов. Теперь для каждого компонента можно задать своё индивидуальное условие.
Возможности
- Индивидуальные условия — для каждого компонента своё условие
- Три режима управления:
- Видимость — компонент отображается на форме
- Доступность — компонент доступен для взаимодействия
- Редактирование — компонент доступен только для чтения
- Защита от ошибок — проверка на дубликаты компонентов в таблице
- Корректная очистка памяти — полная выгрузка данных при закрытии формы (v1.1)
- Безопасное восстановление — оригинальные обработчики восстанавливаются при уничтожении формы (v1.1)
Как это работает
- Добавьте действие на форму
- В таблице «Компоненты» перечислите компоненты, которыми нужно управлять
- Для каждого компонента укажите:
- Сам компонент
- Условие (выражение на языке DataExpress)
- Свойство для управления (Видимость/Доступность/Редактирование)
- При переключении записей, изменении полей или сохранении данных условия пересчитываются
- Компонент становится видимым/доступным/редактируемым, если условие истинно
Настройка
Основные параметры:
- Компонент — выберите компонент на форме
- Условие — выражение, определяющее состояние. Пример: [Статус]='Активен'
- Управление свойством — выберите: Доступность, Видимость или Редактирование
Дополнительные настройки:
- Реагировать на события добавления/изменения записи — при включении расширение будет обрабатывать условия при вставке и редактировании
Примеры условий
- [Сумма] > 0 — компонент активен/видим, когда сумма больше нуля
- [Статус] = 'Новый' — компонент активен/видим для новых записей
- EDITREC() — компонент доступен только при редактировании
- NEWREC() — компонент доступен только при создании новой записи
- NOT EDITREC() — компонент доступен только при просмотре (не в режиме редактирования)
Примеры использования (сценарии)
- Скрывать кнопку «Удалить», пока запись не сохранена: NOT NEWREC()
- Делать поле «Сумма» доступным только для чтения, если документ проведён: [Статус] <> 'Проведён'
- Отображать дополнительные поля только для определённой категории: [Категория] = 'Элитная'
Особенности работы с компонентами
- TdxFile (файловое поле) — управление доступностью через скрытие пунктов контекстного меню (кроме пункта «Открыть»)
- TdxDBImage (изображение) — аналогично TdxFile, управление через контекстное меню
- TdxTabSheet (закладка) — при скрытии активной закладки автоматически переключается на первую видимую; если все скрыты — скрывается весь PageControl
Примечания
- Каждый компонент можно настроить только один раз (проверка на дубликаты)
- Расширение срабатывает при переходе на запись, изменении поля, сохранении или отмене
- Флажок «Реагировать на события» включает обработку при вставке и редактировании
- Компонент видим/доступен/редактируем, если условие истинно
- При использовании свойства «Редактирование» учитывайте, что не все компоненты поддерживают режим ReadOnly
Известные ограничения
Невозможно управлять свойством «Редактирование» для компонентов:
TdxPageControl, TdxTabSheet, TdxGroupBox, TdxButton, TdxLabel, TdxObjectField, TdxImage, TdxGrid, TdxQueryGrid, TdxShape, TdxPivotGrid, TdxChart
Установка
Код расширения прилагается. Для установки скопируйте его в новое действие в вашей базе данных.