Вопрос

На нашем главном экране ввода данных у нас есть диалоговое окно «ОК/Отмена» в событии OnBeforePost.

  • ХОРОШО пусть все идет своим чередом
  • Отмена прямо сейчас делает Dataset.Cancel;

Он делает то, для чего предназначен: откатывает любые изменения и переводит набор данных в режим просмотра.

Это подходит большинству клиентов, но нас спросили, можно ли изменить это на

  • Отмена, Прервать публикацию и остаться в режиме редактирования с сохранением текущих изменений.

Если они хотят отменить, они могут использовать кнопку отмены.

Глядя на источник для procedure TDataSet.Post; использовать событие таким образом невозможно.

Есть ли у кого-нибудь мысли о том, как это можно сделать?

Следовать за:вот как я решил поступить с этим сейчас

case MessageDlg('Save Changes?', mtWarning, [mbYes, mbNo, mbAbort], 0) of
  mrYes: ;
  mrNo: Dataset.Cancel;
  mrAbort: Abort;
  mrNone: Abort;
end;
Это было полезно?

Решение

Вызов метода Abort (из отряда System, если я правильно помню) поднимает молчание EAbort исключение, которое отменяет только текущую операцию.Это должно сработать.

(Кстати:этот метод отмены операции с базой данных также описан где-то глубоко в справочной системе как «обычный» способ добиться этого — именно оттуда я изначально взял эту технику).

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top