Creo que se escapa una cosa. Tienes que actualizar el valor de la variable sólo cuando sea distinta... si no te ocurre lo que ahora.
Código:
Código Delphi:
procedure TFLibroNegro.DBGridLibroNegroDrawColumnCell(Sender: TObject;
const Rect: TRect; DataCol: Integer; Column: TColumn;
State: TGridDrawState);
begin
if (NumSubObr_ant <> DBGridLibroNegro.Fields[1].Value) and (DBGridLibroNegro.Canvas.Brush.Color = clinfoBk) then
begin
DBGridLibroNegro.Canvas.Brush.Color := clSkyBlue;
DBGridLibroNegro.Canvas.FillRect(Rect);
{ observa que la he cambiado de sitio, pequño detalle }
NumSubObr_ant := DBGridLibroNegro.Fields[1].Value;
end;
DBGridLibroNegro.DefaultDrawColumnCell(rect,DataCol,Column,State);
end;
A ver si tienes suerte...
Un saludo