Ошибка при использования старого стиля прогресса

отредактировано 11:44 Раздел: FastReport Studio
При использовании старого стиля прогрессбара (OldStyleProgress = true) при нажатии на диалоговом окне кнопки отмены печати либо при закрытии диалога без дальнейшего формирования отчета появлятся следующий эксепшен:
{"Error HRESULT E_FAIL has been returned from a call to a COM component."} System.SystemException {System.Runtime.InteropServices.COMException}

версия fastreport 3.24.24

Комментарии

  • almanalman космополит
    отредактировано 11:44
    Так и есть, но это не ошибка.

    Для Managed сред я бы порекомендовал для печати использовать свойство Print, объекта TfrxReport. При чтении этого свойства произойдёт печать документа, и вернётся логическое значение true/false.

  • отредактировано 11:44
    Вообщето я использую метод ShowReport для предварительного отображения отчета перед печатью. В отчете есть диалоговое окно для выбора параметров отчета, и при закрытии этого окна (при отказе от дальнейшего формирования отчета) и появляется данное сообщение.

    Кстати, при использовании свойства Print или метода PrintReport (т.е. отправка на принтер без предварительного показа), документ на принтер НЕ ОТПРАВЛЯЕТСЯ!!! Прошу исправить этот баг!
  • almanalman космополит
    отредактировано 11:44
    Henadz написал:
    Кстати, при использовании свойства Print или метода PrintReport (т.е. отправка на принтер без предварительного показа), документ на принтер НЕ ОТПРАВЛЯЕТСЯ!!! Прошу исправить этот баг!
    Перед печатью отчёта его необходимо построить при помощи метода PrepareReport
  • almanalman космополит
    отредактировано December 2006
    Henadz написал:
    Вообщето я использую метод ShowReport для предварительного отображения отчета перед печатью. В отчете есть диалоговое окно для выбора параметров отчета, и при закрытии этого окна (при отказе от дальнейшего формирования отчета) и появляется данное сообщение.
    Такая уж судьба у COM <-> .NET interop компонентов, на каждую нештатную ситуацию генерить исключения. Дело в том, что PrepareReport, который показыват окно OldStyleProgress, возвращает только логическое значение, был ли сформирован отчёт или нет, а ошибки он накапливает в свойстве Errors.
    В свою очередь, managed среды генерять исключение в случае, если код возврата не равен S_OK, то есть нулю.
    Так уж получилось, что при многих нештатных ситуациях, например при отмене построения отчёта, возвращается код ошибки E_FAIL. Что воспринимается .NET приложением как исключение.

    В данном случае могу посоветовать заворачивать вызовы таких процедур в блоки try {} catch(). Зачастую понять причину исключения помогает анализ свойства Errors объекта TfrxReport
  • отредактировано 11:44
    alman написал:
    В данном случае могу посоветовать заворачивать вызовы таких процедур в блоки try {} catch().
    Так и делаю...

Оставить комментарий

Многофункциональный текстовый редактор. Чтобы отредактировать стиль параграфа, нажмите TAB, чтобы перейти к меню абзаца. Там вы можете выбрать стиль. По умолчанию не выбран ни один стиль. Когда вы выберете текст, появится встроенное меню форматирования. Нажмите TAB, чтобы войти в него. Некоторые элементы, такие как многофункциональные вставки ссылок, картинок, индикаторов загрузки и сообщений об ошибок могут быть вставлены в редактор. Вы можете перемещаться по ним, используя стрелки внутри редактора и удалять с помощью клавиш delete или backspace.