Delphi: отмена TDataSet.Post в событии OnBeforePost
На главном экране ввода данных у нас есть диалог OK/Отмена в событии OnBeforePost.
- OK позволяет вещам идти своим ходом.
- Отмена прямо сейчас делает
Dataset.Cancel;
Что делает то, что он имел в виду, откат любых изменений и перенос данных в режим просмотра.
Это нормально для большинства клиентов, но нас спросили, можно ли его изменить на
- Отмена, Прервать сообщение и оставаться в режиме редактирования с сохраненными текущими изменениями.
Если они хотят отменить, они могут использовать кнопку отмены.
Если посмотреть на источник для procedure TDataSet.Post;
, это не похоже на использование этого события.
У кого-нибудь есть какие-то мысли о том, как это можно сделать?
Follow Up: вот как я сейчас решил обработать его
case MessageDlg('Save Changes?', mtWarning, [mbYes, mbNo, mbAbort], 0) of
mrYes: ;
mrNo: Dataset.Cancel;
mrAbort: Abort;
mrNone: Abort;
end;
Ответы
Ответ 1
Вызов метода Abort
(из блока System
, если я правильно помню) вызывает исключение EAbort
без звука, которое отменяет только текущую операцию. Это должно работать.
(Btw: этот метод отмены операции набора данных также описывается где-то глубоко в справочной системе как "нормальный" способ достижения этого --- то, откуда я получил эту технику изначально).