Изображение. TfrxUserDataSetClass

отредактировано 01:48 Раздел: FastReport Studio
Не получается передать изображение через TfrxUserDataSetClass в объект TfrxPictureView.
Назначил объекту TfrxPictureView и DataSet и DataField, но в мой обработчик
void OnGetValueHandler(object VarName, out object Val)
не попадает VarName, который я указал в DataField для поля, содержащего изображение. Все другие поля, содержащие текст - без проблем.
Или это делается как-то по-другому?
Я могу еще на сервер выгружать эту картинку файлом и потом подхватывать этот файл (FR3 использую в веб-приложении), но не знаю, каким образом динамически из кода C# указывать для отчета URL этой картики (у меня запись в таблице для отчета всегда только одна), так как название файла будет для каждого пользователя своим. Но такой механизм внедрять себе - как-то не правильно.

Комментарии

  • отредактировано 01:48
    Возможно, передается не картинка, а OLE-объект (например, в базе Northwind хранятся именно объекты). Следовательно, формат не распознается и ничего не выводится.
  • отредактировано 01:48
    Нет. Формат здесь не причем. До передачи дело вообще не доходит. Событие OnGetValue просто не срабатывает для объекта TfrxPictureView.
  • отредактировано 01:48
    Оно и не должно срабатывать, т.к. картинки надо передавать в событии TfrxReport.OnBeforePrint.
  • отредактировано 01:48
    Я вижу в форумах везде примеры типа:

    procedure TForm1.frxReport1BeforePrint(Sender: TfrxReportComponent);
    begin
    if Sender.Name = 'Picture1' then
    TfrxPictureView(Sender).Picture.Assign(
    Chart1.TeeCreateMetafile(False,
    Rect(0, 0, Round(Sender.Width), Round(Sender.Height))));
    end;

    Но, в коде C# я не понимаю, каким образом добраться до TfrxReport.
    Создать напрямую его я не могу, так как это интерфейс, а не класс.
    У объекта TfrxReportClass отсутствует какое-либо свойство типа TfrxReport.
    У объекта TfrxReportClass событие OnBeforePrint отсутствует.
    Я бы рад хоть чего-то сделать, но у меня уже кончились мысли как добраться до этого события и сижу тыкаюсь везде как слепой кротъ.

    В примере, поставляемом в FR3-COM примеры с картинками показаны только при работе с ADO-контролами. Там они вычитываются из БД и передаются в отчет путем задания свойства DataField у TfrxPictureView (как я и предполагал сделать ранее в коде C#, но это не получается).

    Можно дать хоть какой-нибудь пример, как это все увязать воедино в коде C#?

    Или это должно делаться скриптами в дизайнере отчета? Но там у объкта TfrxReport отсутствует OnBeforePrint. Оно есть только у Page или у Band.

    Я могу выслать маленький проект, который загружает xml-файл DataSet с картинками и fr3-файл, если это чем-то поможет для ответа на мои вопросы.
  • almanalman космополит
    отредактировано July 2005
    xTony написал:
    Можно дать хоть какой-нибудь пример, как это все увязать воедино в коде C#?

    Передача картинки пока не поддерживается в СОМ версии FastReport. Событие OnBeforePrint уже добавлено, но новая версия ещё не выкладывалась. В скором времени будет добавлен интерфейс к TfrxPictureView и возможность передачи картинок появится.

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

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