如何在DBGrid中用不同的颜色显示数据! 比如当日期等于 ‘2003’时用一种红色显示!其他年份用绿色颜色显示!

解决方案 »

  1.   

    procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
      DataCol: Integer; Column: TColumn; State: TGridDrawState);
    begin
      with DBGrid1.Canvas do
      if Column.FieldName = 'DateField' then begin  // 你的日期字段
        if FormatDateTime('yyyy', Column.Field.AsDateTime) = '2003' then
          Font.Color := clRed
        else
          Font.Color := clGreen;
        DBGrid1.DefaultDrawColumnCell(Rect, DataCol, Column, State);
      end;
    end;
      

  2.   

    procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
      DataCol: Integer; Column: TColumn; State: TGridDrawState);
    begin
      DBGrid1.Canvas.Font.Color:=clred;
      DBGrid1.Canvas.Brush.Color:=clgray;
     if Table1.FieldByName('NAME').asString='Boa' then
        DBGrid1.Canvas.TextRect(Rect,rect.Left,rect.Top,Table1.FieldByName('name').AsString);  
    把字段和颜色改改就行了。。 
      

  3.   

    procedure TOpenExpDlg.grdTradeDecGetCellColor(Sender: TObject; ACol,
      ARow: Longint; AState: TGridDrawState; ABrush: TBrush; AFont: TFont;
      var Highlight: Boolean);
    begin
      if HighLight then
      begin
        HighLight := False;
        ABrush.Color := clSelectedColor;
      end;
      with grdTradeDec.Fields[ACol], AFont do
        case Tag of
          1: Color := clMaroon;
          2: Color := clGreen;
          3: Color := clOlive;
          4: Color := clNavy;
          5: Color := clPurple;
          6: Color := clTeal;
          7: Color := clGray;
          8: Color := clSilver;
        end;
    end;
      

  4.   

    给你扩展一下:(呵呵)    {隔行显示不同底色}
        if ((DBGrid1.DataSource.DataSet.RecNo MOD 2)=1)  then
             DBGrid1.Canvas.Brush.Color :=$00EEEEEE
        else
             DBGrid1.Canvas.Brush.Color :=$00DFCEA2 ;
        DBGrid1.DefaultDrawColumnCell(rect,datacol,column,state);
      

  5.   

    以上是dbGrid在GetCellColor事件中的代码