Mega Code Archive

 
Categories / Delphi / ADO Database
 

How to colour alternate rows in a DBGrid

Title: How to colour alternate rows in a DBGrid 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;