我的access数据库有个表有图像, 是OLE 对象, 我想也用DBGird显示出来应该怎么做呀?直接读的话,该行就显示一个[blob], 晕!

解决方案 »

  1.   

    Data Controls面板有个DBImage你用一下试试,我没用过我想就座可以;想在DBGrid中显示用Ehlib中的DBGridEh,其Demo中好象有直接在表格中显示图片的
      

  2.   

    可本人想做的效果就是在grid里面也显出来, 这样就清晰一些, Demo的Demo是显示的imagelist里的图片, 不是数据库中的
      

  3.   

    在DBGrid的OnDrawCell事件中加入如下代码即可在DBGrid控件中显示图形。
    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来中转。