Buscando información de otro tipo, encontré este hilo, que aunque es antiguo, y ya lo podeis tener resuelto, se podría resolver de esta manera.
Poner un campo calculado que se el Recno del dataset que se está poniendo.
Hay una pega: Sólo vale para consultas o tablas que se vean enteras y no se ordenen por un indice que no sea el primario. En las consultas el Recno es la posición del registro en la lista de los mismos. En las tablas, es el nº de registro físico, por lo que si tienes un indice activo que no se primary key puede que no coincidan el nº de registro con la posición del registro en la lista de los mismos. Además, si se filtra ( tanto querys como tablas ) se pierde la referencia.
Yo utilizo este dato (recno ) para sacar las filas pintadas alternativamente con otro color de fondo
Código:
procedure TFormMain.DBGrid4DrawColumnCell(Sender: TObject;
const Rect: TRect; DataCol: Integer; Column: TColumn;
State: TGridDrawState);
begin
if ((Sender as TDBGrid).DataSource.DataSet.RecNo mod 2 = 0) and
(not (gdSelected in State)) then
(Sender as TDBGrid).Canvas.Brush.Color:=clinactivecaptionText;
(Sender as TDBGrid).DefaultDrawColumnCell(Rect, DataCol, Column, State);
end;
Espero que os valga de algo.
Un saludo