Cita:
Empezado por Casimiro Notevi
...
Y repito, el problema no es pintarlos cuando se se hace el select y se presenta en el grid, el problema viene después cuando te mueves por el grid con teclas o ratón.
|
A mi me late que la solucion a tu problema
ya ha sido resuelta con tanta alternativa que te han dado
, pero nada mas se han olvidado de mencionarte algo que es lo siguiente:
Por experiencia propia (y no solo me ha pasado a mi, sino tambien a muchos ) que cuando utilizamos el evento
OnDrawColumnCell del DBGrid para por ejemplo pintar algunas filas o celdas del Grid, por algunas extraña razon(Que tengo que invetigarla mas a fondo) al mover el scroll (movernos por los registros)del DBGrid ya sea con el mouse o con el teclado, Windows
no dibuja por completo el DBGrid,es decir, pareciera que tiene un comportamiento extraño, por eso es que quizas te ha parecido que las soluciones que te han propuesto no te funcionan bien
.
Para solucionar ese problema y hacer que windows redibuje el DBGrid cada ves que te muevas por los registros, es necesario llamar al método
Invalidate del DBGrid en algun evento específico
, por ejemplo yo utilizo el evento
OnDataChange del
DataSouce al que está enganchado el DBGrid para hacer el repintado ya que lo veo el más adecuado para hacerlo.
Código Delphi
[-]procedure TForm1.DataSource1DataChange(Sender: TObject; Field: TField);
begin
DBGrid1.Invalidate; end;
Espero haberte aclarado un poco el panorama.
Saludos...