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