How to colour every second row in a TDBGrid green (Views: 27)
Problem/Question/Abstract: I want to make every other row in my TDBGrid green to simulate green bar paper. Answer: If you are using a TTable and either dBase or Paradox files, you can use the DataSet.RecNo to track which row is being painted: procedure TForm1.DBGrid1DrawDataCell(Sender: TObject; const Rect: TRect; Field: TField; State: TGridDrawState); const clSeaGreen = $00BAFF6F; var OldBrushColor: TColor; OddRec: Boolean; begin with TDBGrid(Sender) do begin OddRec := ((DataSource.DataSet.RecNo mod 2) <> 0); with Canvas do begin OldBrushColor := Brush.Color; if (gdSelected in State) then Brush.Color := clHighlight else if OddRec then Brush.Color := clSeaGreen else Brush.Color := clWhite; end; Canvas.FillRect(Rect); DefaultDrawDataCell(Rect, Field, State); Canvas.Brush.Color := OldBrushColor; end; end; |