C++Builder
  Начало   Форум   Помощь Войти Регистрация  
Страниц: [1]   Вниз
  Печать  
Автор Тема: QRPreview сохранить bmp  (Прочитано 2207 раз)
serg76
Участник


Сказали спасибо: +38/-2
Offline

Сообщений: 575


QRPreview сохранить bmp
« : 13 Август 2015, 09:49:07 »

Builder 6, QuickReport v.3

Нужно сохранить QRPreview1->PreviewImage->QRPrinter->Canvas в формате bmp.
или то что формируется после QuickRep1->Prepare()


выгрузка в pdf пока не интересует.
Записан
S0mbre
Глобальный модератор


Сказали спасибо: +1113/-22
Offline

Сообщений: 2132

S0mbre


Re: QRPreview сохранить bmp
« Ответ #1 : 15 Август 2015, 18:10:35 »

Свойство Canvas есть у объекта TBitmap. Поэтому сохранить можно, например, как показано здесь.
Записан
serg76
Участник


Сказали спасибо: +38/-2
Offline

Сообщений: 575


Re: QRPreview сохранить bmp
« Ответ #2 : 28 Август 2015, 09:13:38 »

у меня при таком копировании

"Project xxx.exe raised exception class EAccessViolation with message 'Access violation at address xxxxxxxx. Read of address yyyyyyyy'."

в архиве тестовый проект
Записан
POV
Участник


Сказали спасибо: +107/-7
Offline

Сообщений: 640


Re: QRPreview сохранить bmp
« Ответ #3 : 28 Август 2015, 09:35:18 »

А создавать-то объект bit кто будет?
Записан
serg76
Участник


Сказали спасибо: +38/-2
Offline

Сообщений: 575


Re: QRPreview сохранить bmp
« Ответ #4 : 28 Август 2015, 09:46:51 »

да недокопировал

так создаю
Код:
  bit=new Graphics::TBitmap;
  bit->PixelFormat=pf32bit;
  bit->Width=QRPreview1->ClientWidth;
  bit->Height=QRPreview1->ClientHeight;
Записан
POV
Участник


Сказали спасибо: +107/-7
Offline

Сообщений: 640


Re: QRPreview сохранить bmp
« Ответ #5 : 28 Август 2015, 09:49:06 »

Вот то, что ты выложил.. нет new
Код
void __fastcall TForm1::Button1Click(TObject *Sender)
{
 TRect mm=Rect(0,0,QRPreview1->ClientWidth,QRPreview1->ClientHeight);
 TRect bm=mm;
 Graphics::TBitmap *bit;
 
 bit->Canvas->CopyRect(mm, QRPreview1->PreviewImage->QRPrinter->Canvas, bm);
//  BitBlt(QuickRep1->QRPrinter->Canvas->Handle,0,0,bit->Width,bit->Height,bit->Canvas->Handle,0,0, PATCOPY);
 
 bit->SaveToFile("prim.bmp");
}
 

Выложи уж полный кусок кода.
Записан
serg76
Участник


Сказали спасибо: +38/-2
Offline

Сообщений: 575


Re: QRPreview сохранить bmp
« Ответ #6 : 28 Август 2015, 10:34:17 »

void __fastcall TForm1::Button1Click(TObject *Sender)
{
  TRect mm=Rect(0,0,QRPreview1->ClientWidth,QRPreview1->ClientHeight);
  TRect bm=mm;
  Graphics::TBitmap *bit;
 
  bit=new Graphics::TBitmap;
  bit->PixelFormat=pf32bit;
  bit->Width=QRPreview1->ClientWidth;
  bit->Height=QRPreview1->ClientHeight;

  bit->Canvas->CopyRect(mm, QRPreview1->PreviewImage->QRPrinter->Canvas, bm);
//  BitBlt(QuickRep1->QRPrinter->Canvas->Handle,0,0,bit->Width,bit->Height,bit->Canvas->Handle,0,0, PATCOPY);
 
  bit->SaveToFile("prim.bmp");
}
Записан
POV
Участник


Сказали спасибо: +107/-7
Offline

Сообщений: 640


Re: QRPreview сохранить bmp
« Ответ #7 : 28 Август 2015, 11:04:23 »

Вместо QRPreview1 поставил просто Image - все работает.
На отладке погляди - QRPreview1 и его поля существуют?
Записан
serg76
Участник


Сказали спасибо: +38/-2
Offline

Сообщений: 575


Re: QRPreview сохранить bmp
« Ответ #8 : 28 Август 2015, 11:13:38 »

Цитировать
Вместо QRPreview1 поставил просто Image - все работает.
мне надо с QRPreview1

Цитировать
На отладке погляди - QRPreview1 и его поля существуют?
Код:
  bit->Width=QRPreview1->ClientWidth;
  bit->Height=QRPreview1->ClientHeight;
есть или какие поля?
Записан
POV
Участник


Сказали спасибо: +107/-7
Offline

Сообщений: 640


Re: QRPreview сохранить bmp
« Ответ #9 : 28 Август 2015, 11:18:00 »

Точку останова влепи. По alt+F5 на QRPreview1  погляди чему равен указатель объекта и его поля к которым ты обращается (QRPreview1->PreviewImage->QRPrinter->Canvas).
Если где-то будет "???" или "NULL" то косяк с объектом, чего-то там не инициализировано что-ли..
Записан
serg76
Участник


Сказали спасибо: +38/-2
Offline

Сообщений: 575


Re: QRPreview сохранить bmp
« Ответ #10 : 28 Август 2015, 11:30:46 »

на QRPreview1->PreviewImage->QRPrinter->Canvas
адрес стоит
Записан
serg76
Участник


Сказали спасибо: +38/-2
Offline

Сообщений: 575


Re: QRPreview сохранить bmp
« Ответ #11 : 28 Август 2015, 11:35:48 »

а через указатель
Код:
  TQRPreview *tq=new TQRPreview(QRPreview1);
  bit->Canvas->CopyRect(mm, tq->PreviewImage->QRPrinter->Canvas, bm);

пишит tq->PreviewImage->QRPrinter=NULL
Записан
POV
Участник


Сказали спасибо: +107/-7
Offline

Сообщений: 640


Re: QRPreview сохранить bmp
« Ответ #12 : 28 Август 2015, 13:11:09 »

Ну потому-то ругается.
Записан
serg76
Участник


Сказали спасибо: +38/-2
Offline

Сообщений: 575


Re: QRPreview сохранить bmp
« Ответ #13 : 28 Август 2015, 16:27:03 »

Цитировать
Ну потому-то ругается.
как решить проблему
Записан
POV
Участник


Сказали спасибо: +107/-7
Offline

Сообщений: 640


« Ответ #14 : 30 Август 2015, 17:50:14 »

Я не в курсе что это за репорт и чего с ним не так.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  




....

Powered by SMF 1.1.21 | SMF © 2025, Simple Machines
Страница сгенерирована за 0.082 секунд. Запросов: 21.