在DBGRID的ondrawdatacell里面判断
if dataset1.findfield('money').value > 5000 then
  dbgrid1.canvas.font.color := clRed
else
  dbgrid1.canvas.font.color := clGreen;

解决方案 »

  1.   

    procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
      DataCol: Integer; Column: TColumn; State: TGridDrawState);
    begin
    //整列
      if TDBGrid(Sender).DataSource.DataSet.FieldByName('金额').AsFloat > 5000 then begin
        TDBGrid(Sender).Canvas.Font.Color := clRed;
        TDBGrid(Sender).DefaultDrawColumnCell(Rect, DataCol, Column, State);
      end;
    end;
      

  2.   

    补充一下:
    首先必须将dBGrid的DefaultDraw属性置为false,DrawColumnCell事件才会有效。
    如果要整行变颜色,如 zswang(伴水)所写。
    如果要单格变颜色,就得如下所示:
      if Column.FieldName='金额' then
        if TDBGrid(Sender).DataSource.DataSet.FieldByName('金额').AsFloat  >    5000  then  begin
              TDBGrid(Sender).Canvas.Font.Color  :=  clRed;
        end
        else 
          TDBGrid(Sender).Canvas.Font.Color  :=  clGreen
      else
        TDBGrid(Sender).Canvas.Font.Color  :=  clGreen;
      TDBGrid(Sender).DefaultDrawColumnCell(Rect,  DataCol,  Column,  State);