Hay una forma de pintar alternadamente las filas sin depender del número de registro que consiste en calcular la fila a partir de la posición de la celda que se está dibujando (Rect.Top) y la altura de las filas.
No la he encontrado pero creo que es algo como esto:
Código Delphi
[-]
type
TExDBGrid = class(TDBGrid);
procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
DataCol: Integer; Column: TColumn; State: TGridDrawState);
begin
if Odd(Rect.Top div (TExDBGrid(DBGrid1).DefaultRowHeight + Integer(dgRowLines in DBGrid1.Options))) then
DBGrid1.Canvas.Brush.Color := clMoneyGreen;
DBGrid1.DefaultDrawColumnCell(Rect, DataCol, Column, State);
end;
procedure TForm1.MyTable1AfterScroll(DataSet: TDataSet);
begin
DBGrid1.Refresh;
end;
Creo recordar que era algo más sencillo pues aquí hay que manejar el evento AfterScroll del DataSet que se esté usando. Pero por ahí va la idea.
// Saludos