Fiz desta maneira e funcionou sem muitos segredos
procedure ZebrarGrid(Sender, DataSet: TObject; Rect: TRect; Column: TColumn;
State: TGridDrawState);
begin
if not (DataSet as TDataSet).Active then Exit;
if (DataSet as TDataSet).IsEmpty then Exit;
// se a célula está selecionada ou foi selecionada no multi-select
if (gdSelected in State) or ((Sender as TDBGrid).SelectedRows.CurrentRowSelected) then
begin
// define a cor de fundo do fundo
(Sender as TDBGrid).Canvas.Brush.Color := $00CFB78F;
end
else // se a célula não está selecionada
begin
if not Odd((DataSet as TDataSet).RecNo) then // se for ímpar
begin
// define a cor de fundo
(Sender as TDBGrid).Canvas.Brush.Color := cl3DLight;
end
else
begin
// define a cor de fundo
(Sender as TDBGrid).Canvas.Brush.Color := clWindow;
end;
end;
(Sender as TDBGrid).Canvas.FillRect(Rect);
(Sender as TDBGrid).Canvas.TextOut(Rect.Left + 2,Rect.Top, Column.Field.AsString);
end;