INTELLIGENT WORK FORUMS
FOR COMPUTER PROFESSIONALS

Log In

Come Join Us!

Are you a
Computer / IT professional?
Join Tek-Tips Forums!
  • Talk With Other Members
  • Be Notified Of Responses
    To Your Posts
  • Keyword Search
  • One-Click Access To Your
    Favorite Forums
  • Automated Signatures
    On Your Posts
  • Best Of All, It's Free!

*Tek-Tips's functionality depends on members receiving e-mail. By joining you are opting in to receive e-mail.

Posting Guidelines

Promoting, selling, recruiting, coursework and thesis posting is forbidden.

Jobs

Database Programming

How to colour alternate rows in a DBGrid by towerbase
Posted: 29 Oct 05

The appearance of a DBGrid control may be improved by alternating the colour of each row.  The following code colours the odd numbered rows clAqua and the even numbered rows clWhite.  

First, you need to set the DefaultDrawing property of the grid to FALSE.

Second, you need to code an ColumnCellDraw event handler for the grid similar to this:

CODE

procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
  DataCol: Integer; Column: TColumn; State: TGridDrawState);
const
  RowHeight = 18;
begin
  DBGrid1.Canvas.Font.Color := clBlack;
  if Odd(rect.top div RowHeight) then
    DBGrid1.canvas.Brush.Color := clAqua
  else
    DBGrid1.Canvas.Brush.Color := clWhite;
  DBGrid1.canvas.TextRect(rect,rect.Left,rect.top,table.fields[DataCol].AsString);
end;
Note that this routine assumes that the font size is 8 and that the row height is 18.  If you use a different font size then you will need to adjust RowHeight.

Finally, you need to code an AfterScroll event handler for the Dataset that provides data to the DBGrid to ensure that the DBGrid is redrawn properly.

CODE

procedure TForm1.TableAfterScroll(DataSet: TDataSet);
begin
  DBGrid1.Invalidate;
end;

Back to Embarcadero: Delphi FAQ Index
Back to Embarcadero: Delphi Forum

My Archive

Resources

Close Box

Join Tek-Tips® Today!

Join your peers on the Internet's largest technical computer professional community.
It's easy to join and it's free.

Here's Why Members Love Tek-Tips Forums:

Register now while it's still free!

Already a member? Close this window and log in.

Join Us             Close