No sé si ya te percataste, pero esta forma de pintar la barra no funciona bien si el DBGrid tiene activada la opción dgMultiSelect. Luego de darle algunas vueltas al código de la VCL, veo que la opción más sencilla es usar el método HighlightCell del DBGrid, ya que éste toma en consideración las filas que estén seleccionadas. Lo malo es que este método está protegido, aunque puede usarse el viejo truco de la desprotección:
Código Delphi
[-]
type
TDBGrid = class(DBGrids.TDBGrid);
procedure TForm1.DBGrid1DrawColumnCell(
Sender: TObject; const Rect: TRect;
DataCol: Integer; Column: TColumn; State: TGridDrawState);
begin
if TDBGrid(DBGrid1).HighlightCell(DataCol, TDBGrid(DBGrid1).Row, '', State) then
DBGrid1.Canvas.Brush.Color := clRed;
DBGrid1.DefaultDrawColumnCell(Rect, DataCol, Column, State);
end;
En fin, creo que esto sólo sería necesario si está activada la opción mencionada.
// Saludos