怎么样在DBGrid中显示一个图片?
100分

解决方案 »

  1.   

    ondrawdatacell中
      begin
        bmp:=tbitmap.Create;
        bmp.assign(field);
        self.canvas.stretchdraw(rect,bmp);
        bmp.free;
      end;
      

  2.   

    在DBGrid控件中显示图形类 别:数据库
     
      如果在数据库中设置了一个为BLOB类型的字段用于保存图形,在使用DBGrid控件显示时,在表格中显示的是BLOB,而无法显示出图形,当然,有一些第三方控件可以显示出图形,但是要去找第三方控件不是一件容易的事,而且有些好用的都需要付费。能不能在DBGrid中显示图形呢?答案是肯定的。
      在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来中转。
     
      

  3.   

    用dxDBGrid,轻舟网上有下载,Freer的。你一定会爱上她的
    嘿嘿。