Отменить печать из кода отчета
CouRage
Санкт-Петербург
Здравствуйте.
Имеется такая простая конструкция:
Можно как-нибудь отменить печать из кода отчета, не выбрасывая при этом исключения ?
Через Report.Abort() не получается - документ все равно печатается.
Имеется такая простая конструкция:
FastReport.Report rpt;
...
if (rpt.Prepare())
rpt.PrintPrepared();
Можно как-нибудь отменить печать из кода отчета, не выбрасывая при этом исключения ?
Через Report.Abort() не получается - документ все равно печатается.
Комментарии
Печать, когда она уже началась, отменить программно нельзя. Только по нажатию кнопки "Отмена" в окне прогресса.
Реальный пример:
Печатается счет. Сразу на принтер - не выводя в предварительный просмотр. Если сумма по счету = 0, то печатать не надо - надо вывести об этом сообщение. Посчитать и проверить сумму можно только в отчете, в приложении - нет. Получается надо в момент выполнения кода отчета выполнять проверку и отменять или нет печать.
Пробовал выкрутиться так:
Код приложения:
Код отчета:
Только тут возникла проблема - throw new Exception прерывает выполнение, однако на экране остается окно прогресса FastReport с надписью "Готовится страница 1", по кнопке отмена оно не закрывается. Причем оно TopMost и висит над всеми окнами всех приложений.
Можно в этой ситуации с окном прогресса что-нибудь сделать ? Может ввести какой-нибудь флаг в класс Report - bool ShowProgress ?
Мне казалось, что Report.Abort() это должен делать, но видимо это не так.
Отчет не обязательно прерывать, и печать не обязательно начинать
В коде отчета создаете новый параметр отчета, а своем коде проверяете его наличие.
В отчете:
В программе:
Про параметры и про то, что их можно менять в коде отчета, а потом смотреть в коде приложения, как-то не подумал.
Наверное правильнее будет как-то так: