读书人

fast report 图片打印有关问题

发布时间: 2012-03-20 14:01:10 作者: rapoo

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即可.

读书人网 >C++ Builder

热点推荐