Последняя версия DataExpress 26.8.17

Изображение Скачать | Изображение Что нового? | Демо

Индивидуальные настройки условий видимости/доступности полей

Расширение функционала и существующих возможностей программы с помощью модулей расширений и плагинов от сторонних разработчиков.

Модератор: Разработчики расширений

Pozharskiy1991
Интересующийся
Сообщения: 100
Зарегистрирован: 31 май 2024, 15:07
Откуда: МО, Пушкино
Благодарил (а): 39 раз
Поблагодарили: 26 раз

Индивидуальные настройки условий видимости/доступности полей

Сообщение Pozharskiy1991 » 04 июл 2026, 01:08

Автор: Pozharskiy1991
Версия: 1.1


Описание
  • Расширение PropConds является развитием идеи, заложенной в действии «Управление видимостью/доступностью компонентов».
  • Главное отличие: в стандартном действии условие было общим для всех компонентов. Теперь для каждого компонента можно задать своё индивидуальное условие.


Возможности
  • Индивидуальные условия — для каждого компонента своё условие
  • Три режима управления:
    • Видимость — компонент отображается на форме
    • Доступность — компонент доступен для взаимодействия
    • Редактирование — компонент доступен только для чтения
  • Защита от ошибок — проверка на дубликаты компонентов в таблице
  • Корректная очистка памяти — полная выгрузка данных при закрытии формы (v1.1)
  • Безопасное восстановление — оригинальные обработчики восстанавливаются при уничтожении формы (v1.1)


Как это работает
  1. Добавьте действие на форму
  2. В таблице «Компоненты» перечислите компоненты, которыми нужно управлять
  3. Для каждого компонента укажите:
    • Сам компонент
    • Условие (выражение на языке DataExpress)
    • Свойство для управления (Видимость/Доступность/Редактирование)
  4. При переключении записей, изменении полей или сохранении данных условия пересчитываются
  5. Компонент становится видимым/доступным/редактируемым, если условие истинно


Настройка

Основные параметры:
  • Компонент — выберите компонент на форме
  • Условие — выражение, определяющее состояние. Пример: [Статус]='Активен'
  • Управление свойством — выберите: Доступность, Видимость или Редактирование

Дополнительные настройки:
  • Реагировать на события добавления/изменения записи — при включении расширение будет обрабатывать условия при вставке и редактировании


Примеры условий
  • [Сумма] > 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


Установка
Код расширения прилагается. Для установки скопируйте его в новое действие в вашей базе данных.
Вложения
PropConds.rar
(4.21 КБ) 17 скачиваний
PROPCONDS-DEMO.rar
(85.2 КБ) 10 скачиваний

Теги:

Аватара пользователя
admin
Разработчик
Сообщения: 8013
Зарегистрирован: 14 мар 2016, 11:32
Откуда: Ленинградская
Благодарил (а): 290 раз
Поблагодарили: 1890 раз

Индивидуальные настройки условий видимости/доступности полей

Сообщение admin » 04 июл 2026, 12:45

Pozharskiy1991 писал(а):Ключевое преимущество v1.1:
Исправлены утечки памяти — при закрытии формы данные корректно очищаются, предотвращая накопление «мусора» и ошибки доступа.
Восстановление обработчиков — при уничтожении формы оригинальные обработчики событий восстанавливаются.

На самом деле утечки не должно быть, т. к. скриптовый движок сам освобождает память, занятую динамическими массивами.
Восстановление обработчиков работать не будет из-за недоработки скриптового движка и может привести к ошибкам AV, к тому же это бессмысленно при удалении формы.

Pozharskiy1991
Интересующийся
Сообщения: 100
Зарегистрирован: 31 май 2024, 15:07
Откуда: МО, Пушкино
Благодарил (а): 39 раз
Поблагодарили: 26 раз

Индивидуальные настройки условий видимости/доступности полей

Сообщение Pozharskiy1991 » 04 июл 2026, 14:37

admin писал(а):
Pozharskiy1991 писал(а):Ключевое преимущество v1.1:
Исправлены утечки памяти — при закрытии формы данные корректно очищаются, предотвращая накопление «мусора» и ошибки доступа.
Восстановление обработчиков — при уничтожении формы оригинальные обработчики событий восстанавливаются.

На самом деле утечки не должно быть, т. к. скриптовый движок сам освобождает память, занятую динамическими массивами.
Восстановление обработчиков работать не будет из-за недоработки скриптового движка и может привести к ошибкам AV, к тому же это бессмысленно при удалении формы.

Поправил.


Вернуться в «Каталог расширений»