如何将image中的图形保存到Access数据库中(100分)

  • 主题发起人 主题发起人 赤狼风云
  • 开始时间 开始时间

赤狼风云

Unregistered / Unconfirmed
GUEST, unregistred user!
我在image中画了一幅图形,如何将这幅图形保存到access数据库中,
另外,保存后能不能在dbgrid控件中显示出来。
最好有Demo
 
access有个ole字段类型
可以用stream保存图形到access中
 
老问题了,不用就模糊了,你查以前的贴子,很多
 
var
buf:TMemoryStream;
begin
buf:=TMemoryStream.Create;
Image1.Picture.Bitmap.SaveToStream(buf);
ADOTable1.Edit;
ADOTable1image.LoadFromStream(buf);
ADOTable1.Post;
buf.Free;

有什么问题,可以
mail to:yuan-fan@21cn.com
 
保存的问题已经解决,现贴出代码供大家参考,现在的问题是如何在dbgrid中显示
出图形,或者有没有这方面的第三方控件,请提供下载地址。

var
a:TMemoryStream;
begin
a:=TMemoryStream.Create;
Image1.canvas.pen.color:=clyellow;
Image1.canvas.pen.width:=2;
Image1.canvas.MoveTo(10,50);
Image1.canvas.lineto(110,50);

image1.Picture.Bitmap.SaveToStream(a);

if not adotable1.Active then
adotable1.Active:=true;
adotable1.Append;
(adotable1.FieldByName('PICT') as TBlobField).loadfromstream(a);
adotable1.Post;
end;
 
看来还是靠自己解决。现将解决方法贴出
在DBGrid的OnDrawColumnCell事件中加入如下代码即可实现在DBGrid中显示图形
var
Bmp : TBitmap;
R : TRect;
begin
if DataCol=1 then //这里是图形字段所在的列
begin
Bmp:=TBitmap.Create;
Bmp.Assign(Column.Field);
DBGrid1.Canvas.StretchDraw(Rect, Bmp);
Bmp.free;
end;
end;

扩展:只要重新修改DBGrid的OnDrawColumnCell事件,加入判断是否是图形字段或是BLOB
字段,然后封装起来,就是一个可以显示图形的DBGrid控件了。
 
http://www.delphibbs.com/delphibbs/dispq.asp?lid=512846
 
真逗,自己的问题自己解决,还要贴分!
呵呵
 
多人接受答案了。
 
后退
顶部