Последняя версия DataExpress 3 beta от 2 ноября 2018 года. Скачать. Энциклопедия DX. Форум на Develop-Soft

условный запрет редактирования полей

Вопросы, связанные с конструктором приложений баз данных DataExpress.
Аватара пользователя
rausNT
Знаток
Сообщения: 494
Зарегистрирован: Чт авг 24, 2017 9:23 am

условный запрет редактирования полей

Сообщение rausNT » Пт сен 01, 2017 4:17 pm

Здравствуйте!
прошу совета, как правильно сделать.
Необходимо запретить редактирование некоторых полей, если в форму ведены данные в другие поля.
Пока решил так в проверке поля:

Код: Выделить всё

iif ( [договор основание] <> OLDVALUE ('договор основание') & [ИП] <> null, 'нельзя редактировать, если уже внесены данные в форму!', '')                       


Но это событие проверки срабатывает только при нажатии кнопки "ОК" на форме. Т.е. не дает сохранить запись, а пользователь уже внес данные в форму, которые нужно не потерять, тогда как он уже не помнит чтоб было в 'договор основание', т.к. случайно нажал.
Хотелось бы просто сделать поле не редактируемым (сереньким).
подскажите, как это сделать?
Заранее спасибо!!!

Аватара пользователя
YurAnt
Эксперт
Сообщения: 3361
Зарегистрирован: Чт апр 13, 2017 8:57 am
Контактная информация:

Re: условный запрет редактирования полей

Сообщение YurAnt » Пт сен 01, 2017 4:30 pm

А покажите скриншот формы (с комментариями желательно), чтобы мы Вам правильно посоветовали. Способов несколько, какой из них лучше - пока непонятно из Вашей истории...
Изображение

Аватара пользователя
rausNT
Знаток
Сообщения: 494
Зарегистрирован: Чт авг 24, 2017 9:23 am

Re: условный запрет редактирования полей

Сообщение rausNT » Пт сен 01, 2017 4:43 pm

вот скриншот, но думаю он не важен. Задача думаю стандартная - запрет редактирования полей при определенных условиях. В данном случае, это условие "некоторые поля формы не равно null"
Вложения
не редактируемые.png
не редактируемые.png (36.66 КБ) 1101 просмотр

Аватара пользователя
rausNT
Знаток
Сообщения: 494
Зарегистрирован: Чт авг 24, 2017 9:23 am

Re: условный запрет редактирования полей

Сообщение rausNT » Пт сен 01, 2017 4:45 pm

на скриншоте читать как "Редактировать"

Аватара пользователя
YurAnt
Эксперт
Сообщения: 3361
Зарегистрирован: Чт апр 13, 2017 8:57 am
Контактная информация:

Re: условный запрет редактирования полей

Сообщение YurAnt » Пт сен 01, 2017 5:14 pm

Чуть переделал одну из функций neitri.

1. Скачайте и установите модуль (инструкция)
2. В редакторе выражений появится новая функция: OBJECTENABLE
3. Добавьте в любое место формы "надпись" и в ее выражении укажите: OBJECTENABLE('dxEdit1',[Текст2]=null | [Текст3]=null)
- dxEdit1 - Ваше имя компонента "Объект" (договор). (имя компонента будет видно при активном режиме эксперта)
- [Текст2], [Текст3], ... - имена полей, при заполнении любого из которых нужно "потушить" dxEdit1
- обратите внимание на разделитель условия | (ИЛИ)

Примечание: очистка всех полей из условия разблокирует поле обратно (то есть - не рассматривайте данный пример как "безусловную защиту").
Вложения
ObjectEnable.epas.zip
(671 байт) 69 скачиваний
Изображение

Аватара пользователя
rausNT
Знаток
Сообщения: 494
Зарегистрирован: Чт авг 24, 2017 9:23 am

Re: условный запрет редактирования полей

Сообщение rausNT » Пт сен 01, 2017 5:22 pm

YurAnt писал(а):Примечание: очистка всех полей из условия разблокирует поле обратно (то есть - не рассматривайте данный пример как "безусловную защиту").


Да, правильно это так и должно работать.

Аватара пользователя
rausNT
Знаток
Сообщения: 494
Зарегистрирован: Чт авг 24, 2017 9:23 am

Re: условный запрет редактирования полей

Сообщение rausNT » Пт сен 01, 2017 6:06 pm

Почему то не работает.
У Вас она штатно отрабатывает?

(кажется придется этот язык Object Pascal учить. А так хотелось накидать побыстрее в GUI форм, чтобы "все само работало" :lol: ).

Аватара пользователя
YurAnt
Эксперт
Сообщения: 3361
Зарегистрирован: Чт апр 13, 2017 8:57 am
Контактная информация:

Re: условный запрет редактирования полей

Сообщение YurAnt » Пт сен 01, 2017 6:12 pm

Расскажите, как Вы ее применяете.
Изображение

neitri
Мастер скриптов
Сообщения: 540
Зарегистрирован: Пн фев 13, 2017 5:42 pm

Re: условный запрет редактирования полей

Сообщение neitri » Пт сен 01, 2017 6:13 pm

В выражении если условие верно редактирование доступно [Текст2]<>null | [Текст3]<>null или [Текст2]=null & [Текст3]=null
Помогли Тебе. Помоги проекту.
Реквизиты помощи Вы можете найти в окне "О программе"

Аватара пользователя
rausNT
Знаток
Сообщения: 494
Зарегистрирован: Чт авг 24, 2017 9:23 am

Re: условный запрет редактирования полей

Сообщение rausNT » Пт сен 01, 2017 6:16 pm

YurAnt писал(а):Расскажите, как Вы ее применяете.


вот так же
Добавьте в любое место формы "надпись" и в ее выражении укажите: OBJECTENABLE('dxEdit1',[Текст2]=null | [Текст3]=null)
- dxEdit1 - Ваше имя компонента "Объект" (договор). (имя компонента будет видно при активном режиме эксперта)
- [Текст2], [Текст3], ... - имена полей, при заполнении любого из которых нужно "потушить" dxEdit1
- обратите внимание на разделитель условия |


Ошибки функция не вызывает, но и вообще ничего не вызывает.