如何让DBImage控件显示Jpeg格式的图片?(100分)

  • 主题发起人 主题发起人 lcwzm
  • 开始时间 开始时间
L

lcwzm

Unregistered / Unconfirmed
GUEST, unregistred user!
我发现Delphi5.0中的DBImage控件只能从数据库中读出和写入BMP格式的图片,其它的图片包括ico,wmf等常用的图片都不能识别,功能连Image控件都不如(可以读Jpeg,ico,wmf)。BMP图片太大,不合适放在数据库中,请问哪位大侠能告诉我如何让DBImage控件读写Jpeg格式的图片?
 
自己写代码吧,用image来做
//保存jpeg
procedure Tfrmado.ImageDblClick(Sender: TObject);
begin
with topendialog.Create(Self) do
begin
if execute then
begin
if not (adoquery1.State in [dsedit]) then adoquery1.Edit;
tblobfield(adoquery1.FieldByName('jpg')).LoadFromFile(FileName);
end;
end;
end;
//显示jpeg
procedure Tfrmado.DataSource1DataChange(Sender: TObject; Field: TField);
var
jpeg: tjpegimage;
stream: TMemoryStream;
begin
if ADOQuery1sex.IsNull then
Caption := 'IsNull'
else
Caption := 'Not Null';
if adoquery1jpg.BlobSize > 0 then
begin
jpeg := tjpegimage.Create;
stream := TMemoryStream.Create;
tblobfield(adoquery1.FieldByName('jpg')).savetostream(stream);
Stream.Seek(0, soFromBeginning);
jpeg.loadfromstream(stream);
image.Picture.Bitmap.Assign(jpeg);
jpeg.Free;
stream.Free;
end
else
image.Picture := nil;
end;
 
樓上的正確,偶來遲也.
 
加上 uses jpeg
正确
 
用流方式控制易出错! 我用了两天未搞定!
最后投机取巧用文件方式解决了!
procedure Teditpz_form.pz_QueryAfterScroll(DataSet: TDataSet);
begin
with pz_query do
try
if fieldbyname('fmpict').AsString='' then exit;
if fileexists('c:/pzpict.jpg') then deletefile('c:/pzpict.jpg');
tblobfield(fieldbyname('fmpict')).SaveToFile('c:/pzpict.jpg');
fmview.Picture.loadFromFile('c:/pzpict.jpg');
deletefile('c:/pzpict.jpg');
finally
end;
end;
 
请问有没有第三方的DBImage控件,能够自由读写Jpeg,Gif等常用图片,请大侠们协助。[:D]
 
最好不要实用数据感知控件,问题太多。还是自己写代码吧:)
 
Delphi的报表控件QRDBimage也有上面所述的毛病,听说有很多第三方的报表控件,功能极其强大,请哪位大侠介绍一下。
 

Similar threads

后退
顶部