Вопрос по Tfrxpictureview
У меня есть TPicture в формате EMF, получаемый путем экспорта схемы. В шаблоне для печати располагаю TfrxPictureView на одной странице и данные с БД на других.
Далее, код выглядит примерно сл. образом:
Собственно, в отчете ожидаю увидеть свою схему. Вижу не понятную мне иконку. Победить удалось только написав наследника от TfrxPictureView и перекрыв ему Draw, где я ручками насильно запихал картинку, или сохранив в файл и загрузив потом из него, или запихав картинку в BLOB поле БД. Меня ни один из этих способов не устраивает.
Так же выяснил, что создаются 4 копии TfrxPictureView (зачем??) и естественно в копии картинка не копируется, а помещается в кэш, и по идее должна потом из него загружаться. Но этого не происходит почему-то...
Сам вопрос. Как мне корректно распечатать картинку из TPicture, не используя временные файлы, БД и т.д. указав из кода какую картинку должен отобразить TfrxPictureView?
***
Не надо отвечать. Сам разобрался. Оказывается экспорт картинки был доступен в 2х режимах (различные константы в заголовке метафайла). Первый - только для работы в виртуальной памяти. В этом режиме картинка сохранялась некорректно. Во втором режиме возможно сохранение на диск, в поток и т.д. Собственно я использовал первый. Отсюда и вытекала проблема. Но с другой стороны, если картинка кэширована и кэш не был загружен, то почему FR об этом не сказал? Я бы сэкономил уйму времени.
Далее, код выглядит примерно сл. образом:
var frPicture: TfrxComponent;
MyMegaPicture: TPicture;
...
begin
...
frPicture := frReport.FindObject('frPicture');
Assert(Assigned(frPicture) and (frPicture is TfrxPictureView));
with frPicture as TfrxPictureView do
Picture := MyMegaPicture; //фактически Picture.Assign(MyMegaPicture);
...
frReport.ShowReport; //кажется так... не суть важна.
...
end;
Собственно, в отчете ожидаю увидеть свою схему. Вижу не понятную мне иконку. Победить удалось только написав наследника от TfrxPictureView и перекрыв ему Draw, где я ручками насильно запихал картинку, или сохранив в файл и загрузив потом из него, или запихав картинку в BLOB поле БД. Меня ни один из этих способов не устраивает.
Так же выяснил, что создаются 4 копии TfrxPictureView (зачем??) и естественно в копии картинка не копируется, а помещается в кэш, и по идее должна потом из него загружаться. Но этого не происходит почему-то...
Сам вопрос. Как мне корректно распечатать картинку из TPicture, не используя временные файлы, БД и т.д. указав из кода какую картинку должен отобразить TfrxPictureView?
***
Не надо отвечать. Сам разобрался. Оказывается экспорт картинки был доступен в 2х режимах (различные константы в заголовке метафайла). Первый - только для работы в виртуальной памяти. В этом режиме картинка сохранялась некорректно. Во втором режиме возможно сохранение на диск, в поток и т.д. Собственно я использовал первый. Отсюда и вытекала проблема. Но с другой стороны, если картинка кэширована и кэш не был загружен, то почему FR об этом не сказал? Я бы сэкономил уйму времени.