在onDrawDataCell中写
if acol=1   //某列暂定为第一列
begin
  with grid do
  begin
    if cell[acol,arow]='345' then
      Canvas.Brush.Color:=clred
    else canvas.brush.color=clgreen;
  end;
  Canvas.FillRect(Rect); 
end;
大体如此

解决方案 »

  1.   

    以前写的代码 仅供参考 procedure TMainForm.DBGrid1DrawColumnCell(Sender: TObject;
                const Rect: TRect; DataCol: Integer; Column: TColumn;
                State: TGridDrawState);
      var i :integer;
      begin
        if gdSelected in State then Exit;
        //定义表头的字体和背景颜色:
        for i :=0 to (Sender as TDBGrid).Columns.Count-1 do
        begin
          (Sender as TDBGrid).Columns.Title.Font.Name :='宋体'; //字体
          (Sender as TDBGrid).Columns.Title.Font.Size :=9; //字体大小
          (Sender as TDBGrid).Columns.Title.Font.Color :=$000000ff; //字体颜色(红色)
          (Sender as TDBGrid).Columns.Title.Color :=$0000ff00; //背景色(绿色)
        end;
        //隔行改变网格背景色:
        if Query1.RecNo mod 2 = 0 then
          (Sender as TDBGrid).Canvas.Brush.Color := clInfoBk //定义背景颜色
        else
          (Sender as TDBGrid).Canvas.Brush.Color := RGB(191, 255, 223); //定义背景颜色
        //定义网格线的颜色:
        DBGrid1.DefaultDrawColumnCell(Rect,DataCol,Column,State);
        with (Sender as TDBGrid).Canvas do //画 cell 的边框
        begin
          Pen.Color := $00ff0000;  //定义画笔颜色(蓝色)
          MoveTo(Rect.Left, Rect.Bottom); //画笔定位
          LineTo(Rect.Right, Rect.Bottom); //画蓝色的横线
          Pen.Color := $0000ff00;  //定义画笔颜色(绿色)
          MoveTo(Rect.Right, Rect.Top); //画笔定位
          LineTo(Rect.Right, Rect.Bottom); //画绿色的竖线
        end;
      end;
    这是改变每一格的
    procedure Tform_XXX.dbgrid_resultantiDrawDataCell(
      Sender: TObject; const Rect: TRect; Field: TField;
      State: TGridDrawState);
    begin
      //////////////////////////////////////////////////非细菌类
      if pub_curtesttype <> '细菌' then
      begin
        if (dbgrid_resultanti.DataSource.DataSet.FieldByName('Colors').AsVariant
          <> null) and
          (dbgrid_resultanti.DataSource.DataSet.FieldByName('Colors').AsVariant <>
          '') then
        begin
              //        dbgrid_resultanti.Canvas.Font.Color :=clred;
          if (lowercase(field.fieldname) = 'testresult') or
            (lowercase(field.fieldname) = 'stsname') then
            dbgrid_resultanti.Canvas.Font.Color :=
              dbgrid_resultanti.DataSource.DataSet.FieldByName('Colors').AsVariant
        end;
        if (dbgrid_resultanti.DataSource.DataSet.FieldByName('Colors1').AsVariant
          <> null) and
          (dbgrid_resultanti.DataSource.DataSet.FieldByName('Colors1').AsVariant
          <>
          '') then
        begin
          if (lowercase(field.fieldname) = 'testresult1') or
            (lowercase(field.fieldname) = 'stsname1') then
            dbgrid_resultanti.Canvas.Font.Color :=
              dbgrid_resultanti.DataSource.DataSet.FieldByName('Colors1').AsVariant;
        end;
          //////////////////////////////////////////////////////////////////////////////////////////////////
      end;
      dbgrid_resultanti.DefaultDrawDataCell(Rect, Field, State);
    end;