首先将DBgrid的DefaultDrawing属性设置为false; 
然后在DBBrid的DrawColumnCell事件中这样做: 
 
procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect; 
  DataCol: Integer; Column: TColumn; State: TGridDrawState); 
begin 
  if Column.Field.AsInteger < 75 then begin 
     DBGrid1.Canvas.Font.Color := clWhite; 
     DBGrid1.Canvas.Brush.Color := clRed;  //这里设置单元格填充色 
     DBGrid1.Canvas.FillRect(Rect);   //这里对相应的单元格进行北景色填充 
  end; 
  //输出内容 
  DBGrid1.Canvas.TextRect( Rect, Rect.Left, Rect.Top, Column.Field.AsString); 
end;这个例子中是设置DBGrid的单元格颜色的,你的问题原理也一样,就是当条件合适的时候在cell中画上哪个图标,然后在把文字显示

解决方案 »

  1.   

    楼上的朋友方法正确,能否给出在某列中显示图标文件如TEST.ICO的例子,或显示TImage中的位图图标.万分感谢!
    Email: [email protected]
      

  2.   

    楼上的朋友方法正确,能否给出在某列中显示图标文件如TEST.ICO的例子,或显示TImage中的位图图标.万分感谢!
    Email: [email protected]
      

  3.   

     也给我有啊:[email protected]
      

  4.   

    最简单的方法是建立一个临时的tbitmap对象,将图形赋给它。示例:
    var
     bmp:Tbitmap;
     outrect:Trect;
     bmpwidth:integer;
    begin
    outrect:=rect;
    if column.field='tablecommon_name' then //要加入图形的列名
     begin
     bmp:=tbitmap.creat;
     try
      bmp.assign(tablegraphic);//要加入的图形
      bmpwidth:=(rect.bottom-rect.top)*2;
      outrect.right:=rect.left+bmpwidth;
      dbgrid1.canvas.stretchdraw(outrect,bmp);
      finally
      bmp.free;
      end;
      outrect:=rect;
      outrect.left:=outrect.left+bmpwidth;
      end;
      dbgrid1.defaultdrawdatacell(outrect,column.field,state);//如果没有其他要输出到同一列的数据的话,可以不加这条语句。
      

  5.   

    首先将DBgrid的DefaultDrawing属性设置为false;