首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ Builder >

fast report 图片打印有关问题

2012-03-20 
fast report 图片打印问题我用的是fast report 2.5 和bcb6情况是这样的,如果我直接输入图片的名称打印。就

fast report 图片打印问题
我用的是fast report 2.5 和bcb6
情况是这样的,如果我直接输入图片的名称打印。就没有问题。
如果先在form中用image打开预览图片,然后再点打印就会出问题,很奇怪。请高人指教!谢谢
下面是代码
第一个是打开预览图片的代码

 if(op->Execute())
  {
  edtTp->Text = op->FileName;

  //AnsiString Add=OpenDialog1->FileName;
  Graphics::TBitmap* myBitmap=new Graphics::TBitmap;
  TJPEGImage* myJpeg=new TJPEGImage;
  TMemoryStream *ms = new TMemoryStream;
  ms->LoadFromFile(edtTp->Text.Trim());
  char sz[2] = { 0 };
  ms->Read(sz, 2);
  if (sz[0] == 0x42 && sz[1] == 0x4d)
  {
  myBitmap->LoadFromFile(edtTp->Text.Trim());
  Image1->Canvas->Draw(0,0,myBitmap);
  }
  else
  {
  myJpeg->LoadFromFile(edtTp->Text.Trim());
  Image1->Canvas->Draw(0,0,myJpeg);
  }
  AnsiString lj = op->FileName;
  if(lj.Pos(".") > 0)
  lj = lj.SubString(lj.Pos(".") - 2,2);
  edtTp->Text = lj;

  delete ms;

}
第二个是打印代码
  rp->LoadFromFile("11.frf");
  AnsiString mc = edtTp->Text.Trim();
if ((TfrPictureView*)rp->FindObject("Picture1"))
{
 if (FileExists(ExtractFileDir(Application->ExeName)+"\\gytk\\"+mc+".jpg"))

 {
  AnsiString tp = ExtractFileDir(Application->ExeName)+"\\gytk\\"+mc+".jpg";
  ((TfrPictureView*)rp->FindObject("Picture1"))->Picture->LoadFromFile(tp);
  }
}

  rp->ShowReport();

[解决办法]

C/C++ code
ms->LoadFromFile(edtTp->Text.Trim());char sz[2] = { 0 };ms->Read(sz, 2);
[解决办法]
刚又看了看你的代码, 你的Bitmap对象和JpegImage对象没有释放?
将文件载入MemoryStream以后, Bitmap和JpegImage对象可以直接从流中装载数据, 不必重复从文件读取. 记的将MemoryStream的Position置为0即可.

热点排行