怎样在dbgrid中给某一类记录添加背景颜色,以区别记录 !

解决方案 »

  1.   

    在DBGrid的OnDrawDataCell事件中:procedure TFormMain.DBGrid1DrawDataCell(Sender: TObject; const Rect: TRect;
      Field: TField; State: TGridDrawState);
    begin
      if ADOQry1.FieldByName('field1').AsString = 'A' then begin
        DBGrid1.Canvas.Brush.Color := clRed;
        DBGrid1.Canvas.FillRect(Rect);
        DBGrid1.Canvas.Font.Color := clBlack;
        DBGrid1.DefaultDrawDataCell(Rect, Field, State);
      end;
    end
      

  2.   

    procedure TProviderForm.DBGrid1DrawColumnCell(Sender: TObject;
      const Rect: TRect; DataCol: Integer; Column: TColumn;
      State: TGridDrawState);
    begin
      with TDBGrid(Sender) do
      begin
        case Self.Frame21.ADOQuery1.RecNo Mod 2 of
          0: Canvas.Brush.Color :=clMoneyGreen;
          1: Canvas.Brush.Color :=clWindow;
        end;
        if gdSelected in State then
        begin
          Canvas.Font.Color :=clBackground;
          Canvas.Brush.Color:=clSkyBlue;
          Canvas.FillRect(Rect);
        end;
        DefaultDrawColumnCell(Rect,DataCol,Column,State);
      end;
    end;procedure TProviderForm.DBGrid1DrawColumnCell(Sender: TObject;
      const Rect: TRect; DataCol: Integer; Column: TColumn;
      State: TGridDrawState);
    begin
      with TDBGrid(Sender) do
      begin
        case Self.Frame21.ADOQuery1.RecNo Mod 2 of  //隔行设置颜色,类似CSDN效果
          0: Canvas.Brush.Color :=clMoneyGreen;
          1: Canvas.Brush.Color :=clWindow;
        end;
        if gdSelected in State then  //对选择行进行高亮颜色的设置
        begin
          Canvas.Font.Color :=clBackground;
          Canvas.Brush.Color:=clSkyBlue;
          Canvas.FillRect(Rect);
        end;
        DefaultDrawColumnCell(Rect,DataCol,Column,State);
      end;
    end;
      

  3.   

    procedure TFormMenulsz_tj.DBGrid1DrawColumnCell(Sender: TObject;
      const Rect: TRect; DataCol: Integer; Column: TColumneh; State: TGridDrawState);
    begin
     dbgrid1.Canvas.Brush.color:= $00BDCBE8;
     dbgrid1.Canvas.Rectangle(rect);
     dbgrid1.DefaultDrawColumnCell(rect,datacol,column,state);]
    end;
      

  4.   

    以下代码放在DBGRID的DrawColumnCell事件里:
    //使网格中的数据依据一定条件显示颜色
        if DM.adoquery1.FieldByName('库存').AsInteger < 0 then
    //改变背景颜色
          DBGrid1.Canvas.Brush.Color := clRed
        else if DM.adoquery1.FieldByName('库存').AsInteger<3 then
          DBGrid1.Canvas.Brush.Color := clYellow;
    //改变字体颜色
        // DBGrid1.Canvas.Font.Color := clRed;
        if DM.adoquery1.FieldByName('库存').AsInteger > 50 then
          DBGrid1.Canvas.brush.Color := clGreen;
          DBGrid1.DefaultDrawColumnCell(Rect, DataCol, Column, State);
      end;