如何用QRIMAGE将BLOB字段中的JPEG图片显示并打印出来?(50分)

  • 主题发起人 主题发起人 peterluolaw
  • 开始时间 开始时间
P

peterluolaw

Unregistered / Unconfirmed
GUEST, unregistred user!
如题所示.请各位大侠出手相助!!!
 
To:风中流云,
请问这一句应该加在什么地方?
是QUICKRPT1的ONPREVIEW,ONSTARTPAGE还是BEFOREPRINT?
QRIMAGE本身好象没有任何方法或者事件?!
 
先用TJPEGIMAGE读出,再读入QRIMAGE1
var jp : TJpegimage;
ss : TMemoryStream;
begin
jp := TJpegimage.create;
ss := Tmemorystream;
field.savetostream(ss);
jp.loadfromstream(ss);
qrimage1.picture.assign(jp);
jp.free;
ss.free;
end;
 
用个临时文件的方式比较可靠:
Var
TempJpg :String ;
begin
TempJpg :='C:/Temp/TempJpg.Jpg';
TblobFields(Somefield.savetoFile(TempJpg);
qrimage1.picture.assign(jp);
end;
高兴的时候在窗口关闭的时候:
DeleteFile(TempJpg);
 
QRImage1.Picture.bitmap.Assign(tblobfield(quey1.fieldbyname('')));
在quickrep1的onneeddata;
 
好像还是不行!?提示说"找不到字段...."!这是什么问题?我是从FORM1中直接调用QUICKRPT1
的,FORM1和FORM2中各有DATASOURCE和TABLE控件,且属性设置教师一样的.代码如下:
procedure form1.button1click(sender: tobject);
begin
form2.quickrep1.preview;
end;

procedure
var
tmpg: tblobstream;
jpg: tjpegimage;
begin
TForm8.QuickRep1NeedData(Sender: TObject;
var MoreData: Boolean);
if TBlobField(form8.Table1.FieldbyName('photo')).isnull=false then
begin
tmpg:=TBlobStream.Create(TBlobField(Table1.FieldbyName('photo')), bmRead);
jpg:= TJPEGImage.Create;
jpg.LoadFromStream(tmpg);
qrImage1.Picture.Assign(jpg);
tmpg.free;
jpg.free;
end
else
qrimage1.picture:=nil;
end;
 
在QuickRep1的OnNeedData事件中加入:
QRImage1.Picture.Assign( Table1.FieldByName('BMP') );
 
很不错的答案!
 
接受答案了.
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
D
回复
0
查看
2K
DelphiTeacher的专栏
D
D
回复
0
查看
2K
DelphiTeacher的专栏
D
后退
顶部