ondrawcolumncell(...)//在此事件中加入
begin
  if 条件 then
  dbgrid.canvas.font.color:=clred;
  dbgrid.defaultdrawcolumncell(rect,datacol,column,state);
end;

解决方案 »

  1.   

    写到 DBGrid1DrawDataCell 中去。
      

  2.   

    先将dbgrid的defaultdrawing设为false;
    DBGrid1DrawDataCell 中添加:
    procedure TF_xz_ffgz.DBGrid1DrawColumnCell(Sender: TObject;
      const Rect: TRect; DataCol: Integer; Column: TColumn;
      State: TGridDrawState);
    var
      Tem_text:STring;
      TEm_rect:Trect;
      tem_str:string;
    begin
      Tem_str:=column.field.displaytext;
      if Tem_str=条件 then begin
        dbgrid1.canvas.brush.color:=clred;
      end;
      Tem_rect.Left:=Rect.Left-1;
      Tem_Rect.Top:=Rect.Top-1;
      Tem_Rect.bottom:=rect.Bottom+1;
      Tem_Rect.Right:=rect.Right+1;
      if Gdselected in state then begin
        Dbgrid1.Canvas.Brush.Color:=clhighlight;
        Dbgrid1.Canvas.Font.Color:=Clhighlighttext;
      end;
      Dbgrid1.Canvas.Textrect(rect,rect.left,rect.top,Tem_text);
      dbgrid1.canvas.drawfocusrect(Tem_rect);
    end;
    其中的所有颜色仅做参考,可以实际添加,若不行,请直接和我联系,保证你可以得到所有的想要的类型的表格
      

  3.   

    //我已经调试成功了!
      if (TDBGrid(Sender).DataSource.DataSet.FieldByName('商品单价').AsFloat < 0 { 行的条件 })
        and (DataCol = 1 { 列的条件 }) then TDBGrid(Sender).Canvas.Brush.Color := clRed { 想要的颜色 }
      else TDBGrid(Sender).Canvas.Brush.Color := TDBGrid(Sender).Color; { 原来的颜色 }
      TDBGrid(Sender).DefaultDrawColumnCell(Rect, DataCol, Column, State);
      

  4.   

    procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
      DataCol: Integer; Column: TColumn; State: TGridDrawState);
    begin
    //我已经调试成功了!
      if (TDBGrid(Sender).DataSource.DataSet.FieldByName('商品单价').AsFloat < 0 { 行的条件 })
        and (DataCol = 1 { 列的条件 }) then TDBGrid(Sender).Canvas.Brush.Color := clRed { 想要的颜色 }
      else TDBGrid(Sender).Canvas.Brush.Color := TDBGrid(Sender).Color; { 原来的颜色 }
      TDBGrid(Sender).DefaultDrawColumnCell(Rect, DataCol, Column, State);
    end;