if dbgrid1.datasource1.dataset.fieldbyname('sex') = '女' then
begin
  dbgrid1.canvas.font.color := clblue;
  dbgrid1.canvas.brush.color := clred;
end;
dbgrid1.defaultDrawColumnCell(...)

解决方案 »

  1.   

    procedure TForm1.DBGrid1DrawDataCell(Sender: TObject; const Rect: TRect;Field: TField; State: TGridDrawState);
      begin
         if Table1.Fieldbyname(′Salary′).value<=SpinEdit1.value then
            DBGrid1.Canvas.Brush.Color:=ColorGrid1.ForeGroundColor
       else
            DBGrid1.Canvas.Brush.Color:=ColorGrid1.BackGroundColor;
         DBGrid1.Canvas.FillRect(Rect);
         DBGrid1.Canvas.TextOut(Rect.left+2,Rect.top+2,Field.AsString);
      end;
      

  2.   

    但是不能动态的改变
    数据表中的记录改变时,dbgrid中的颜色没有跟着改变
    (当然性别不能变了)
    但是如果根据可以改变的列来显示颜色可怎么办呀
      

  3.   

    用Canvans ?~ 看来我了解Delphi了,(新手)
      

  4.   

    lwk_hlj(阿凯) 的方法是为了跟以前兼容的,不推荐使用,
    用DBGrid1DrawColumnCell就可以了