如何改变dbgrid中某列的各行颜色?
如:根据字段内容改变某行颜色!

解决方案 »

  1.   

    procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
      DataCol: Integer; Column: TColumn; State: TGridDrawState);
    begin
    //改变某个单元格的颜色
    if (uppercase(column.fieldname)='CAR_NO') then
              if column.Field.asstring='黑M88147' then
       with sender as Tdbgrid do
                  begin
                     canvas.Brush.color:=clblue;
                     canvas.Font.color:=clred;
                     canvas.TextRect(rect,rect.left+1,rect.top+1,'中心');
                  end;
      

  2.   

    procedure Tfrm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
      DataCol: Integer; Column: TColumn; State: TGridDrawState);
    begin
      with dbgrid1 do
      begin
        if datasource.DataSet.FieldByName('zt').asinteger = 0 then  
        begin
          Canvas.Brush.Color:=clRed;              //背景色
          Canvas.Font.Color:=clWhite;               //字体色
        end
        else                                                       //未作废
        begin
          Canvas.Brush.Color:=clWhite;
          Canvas.font.color := ClBlack;
        end;
        DefaultDrawColumnCell(rect,datacol,column,state);
      end;end;