Ver Mensaje Individual
  #4  
Antiguo 14-05-2008
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Reputación: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
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
Responder Con Cita