我的access数据库有个表有图像, 是OLE 对象, 我想也用DBGird显示出来应该怎么做呀?直接读的话,该行就显示一个[blob], 晕!
解决方案 »
- 请问TreeView和Treelist有什么区别?
- delphi 2010 里的TRibbon 怎么不能放Edit控件啊,不会用,请高手指点!
- 刚才在delphi盒子里看到大富翁被网监发现违法帖子,已经关闭,哪位消息灵通的知道是什么样的帖子啊?
- 操作access数据库时间问题
- 多线程时,如何调用指定的线程呢?
- 积分放血大放松了!!!
- 改错
- 高分求教,如何在delphi中用命令在excel中插入一行
- 如何实现integer与real类型之间的转换?
- 报表问题
- 有关ListBox中的ItemIndex属性,Selected、SelCount方法的疑问
- 如何在panel上把已知的两点通过一条线连起来
var
Bmp: TBitmap;
begin
if (Column.Field.DataTyp = ftBLOB) or (Column.Field.DataTyp = ftGraphic) then
begin
Bmp:=TBitmap.Create;
try
Bmp.Assign(Column.Field);
DBGrid1.Canvas.StretchDraw(Rect,Bmp);
Bmp.Free;
Except
Bmp.Free;
end;
end;
end;
按照类似的方法,就可以在DBGrid中显示Memo类型的字段内容。
另外,在往数据库中保存图形时,建议使用EMF图元文件,这样数据库文件的大小不会变的十分惊人,我试过了,同样是一幅400*300的图形,如果用位图,保存100多幅时,数据库文件大小会达到近20MB,而使用EMF矢量图形保存,保存800多幅时才260多KB,保存EMF矢量图形的方法与保存位图是差不多的,在DBGrid中显示也差不多,只不过BLOB型字段内容不能直接Assign给EMF文件,要用MemoryStream来中转。