Показать сообщение отдельно
Старый 15.02.2013, 08:02   #44  
S.Kuskov is offline
S.Kuskov
Участник
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
3,430 / 1772 (66) ++++++++
Регистрация: 28.04.2007
Адрес: Калуга
Цитата:
Сообщение от LeonDerCom Посмотреть сообщение
Идет метод modified, перехватываем super и если остальной код для изменений - если условие не выполняется - то отменяем. Почему нет?
Как именно отменяем? Переприсваиваем старое значение? Такое поведение поля будет отличаться от стандарта.

Сигнатура метода validate:
Цитата:
boolean validate()
Сигнатура метода modified:
Цитата:
void modified()
Система(ядро аксапты) не ждёт от метода modified ответного результата. А от validate ждёт. И если проверка validate возвращает ложь, то система блокирует потерю фокуса контролом, тем самым принуждая пользователя выбрать другое значение. В случае же вашего решения через modified фокус ввода может быть смещён пользователем, значение поля конечно вернётся на старое, но вот пользователю прийдётся вручную возвращаться к полю чтобы повторно ввести новое значение, а фокус в это время может попасть даже на другую вкладку .

Можно конечно для запрета ввода определённого значения вызвать исключение из modified, так сказать аварийно завершить работу метода. Тогда это будет как-то похоже на поведение validate. Но это будет уже точно перебор. См пост от macklakov. Зачем делать похоже, если можно сделать как нужно

Последний раз редактировалось S.Kuskov; 15.02.2013 в 08:04.