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

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

Все вопросы создания форм и их компонентов в дизайнере. Родительская и дочерняя формы. Компоненты формы: надпись, текст, число, дата, время, счётчик,и т.д. Особенности работы и взаимодействия компонентов, их назначение и практическое применение.
rausNT
Опытный
Сообщения: 351
Зарегистрирован: Чт авг 24, 2017 9:23 am

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

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

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

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

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


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

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

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

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

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

rausNT
Опытный
Сообщения: 351
Зарегистрирован: Чт авг 24, 2017 9:23 am

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

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

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

rausNT
Опытный
Сообщения: 351
Зарегистрирован: Чт авг 24, 2017 9:23 am

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

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

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

Аватара пользователя
YurAnt
Эксперт
Сообщения: 3375
Зарегистрирован: Чт апр 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 байт) 45 скачиваний
Изображение

rausNT
Опытный
Сообщения: 351
Зарегистрирован: Чт авг 24, 2017 9:23 am

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

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

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


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

rausNT
Опытный
Сообщения: 351
Зарегистрирован: Чт авг 24, 2017 9:23 am

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

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

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

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

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

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

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

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

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

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

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

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

rausNT
Опытный
Сообщения: 351
Зарегистрирован: Чт авг 24, 2017 9:23 am

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

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

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


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


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


Вернуться в «Формы. Дизайнер. (компоненты и свойства)»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 1 гость