|
24.05.2006, 16:46 | #1 |
Участник
|
Как программно отменить сохранение записи
Если перекрыть метод ValidateWrite, то если пользователь ввел что-то не то, то выдается ошибка, но выйти из этой ситуции можно двумя способами:
1. Ввести правильное значение и сохранить запись 2. Нажать Esc и не сохранять запись. Как в случае ошибки программно отменить сохранение записи (аналогично нажатию Esc и кнопки "Нет") |
|
24.05.2006, 17:05 | #2 |
Moderator
|
По Esc не отменяется сохранение, его просто не происходит.
__________________
Андрей. |
|
24.05.2006, 17:10 | #3 |
Участник
|
Цитата:
Сообщение от Dron AKA andy
По Esc не отменяется сохранение, его просто не происходит.
Получается так: я создаю запись, ввожу неверные данные, ValidateWrite выдает ошибку и после этого, чтобы не сохранять запись нужно нажимать Esc и "Нет". Хотелось бы чтобы это происходило автоматически - ввел неверные данные - запись не создается. |
|
24.05.2006, 17:15 | #4 |
Участник
|
Цитата:
Сообщение от Lucky13
Как в случае ошибки программно отменить сохранение записи (аналогично нажатию Esc и кнопки "Нет")
Код: aaa.data(aaa.orig()); Кажется так... ? |
|
24.05.2006, 17:19 | #5 |
Moderator
|
Если нужно именно не создавать запись, то на validateWrite() сделайте
Код: ... if (!this.cursor().recId) this.delete(); ...
__________________
Андрей. |
|
24.05.2006, 17:27 | #6 |
Участник
|
Если сделать
Код: ... if (!this.cursor().recId) this.cursor().delete(); ... |
|
24.05.2006, 17:38 | #7 |
Moderator
|
По ESC система всего лишь просекает, что в форме были изменения, и спрашивает, вызвать ли метод FormDatasource.write().
Т.е. результат будет тот же, что и по моему примеру - запись не создастся (в моем случае - удалится из кэша Datasource).
__________________
Андрей. |
|
24.05.2006, 18:37 | #8 |
Участник
|
а почему не написать так? (если нужно именно программно)
Код: if(this.validateWrite()) { this.write(); } |
|
24.05.2006, 18:52 | #9 |
Участник
|
Цитата:
Сообщение от savel
а почему не написать так? (если нужно именно программно)
Код: if(this.validateWrite()) { this.write(); } |
|
24.05.2006, 19:11 | #10 |
Участник
|
Цитата:
Сообщение от Lucky13
Тогда запись останется
если её ещё не было, то первый же validateWrite() её не пустит. Если уже была, и в настоящий момент её хотят не корректно про update'ить validateWrite() опять же это не даст. |
|
24.05.2006, 19:53 | #11 |
Участник
|
Цитата:
Сообщение от savel
а почему Вы считаете, что запись останется?
если её ещё не было, то первый же validateWrite() её не пустит. Если уже была, и в настоящий момент её хотят не корректно про update'ить validateWrite() опять же это не даст. |
|
25.05.2006, 10:08 | #12 |
Модератор
|
Посмотрите, как сделано создание заказа. (Форма SalesCreateOrder) Там подобная задача решается перекрытием walidatewrite и write датасорса.
C Уважением, Георгий |
|
25.05.2006, 10:10 | #13 |
Moderator
|
А чем вам мой-то способ не понравился? Вроде делает что требуется...
__________________
Андрей. |
|
25.05.2006, 10:26 | #14 |
Участник
|
Цитата:
Сообщение от Dron AKA andy
А чем вам мой-то способ не понравился? Вроде делает что требуется...
|
|
Теги |
validate, validatewrite, write |
|
|