Ver Mensaje Individual
  #108  
Antiguo 07-01-2011
Avatar de rgstuamigo
rgstuamigo rgstuamigo is offline
Miembro
 
Registrado: jul 2008
Ubicación: Santa Cruz de la Sierra-Bolivia
Posts: 1.646
Reputación: 17
rgstuamigo Va por buen camino
Arrow Para tener en cuenta

Cita:
Empezado por Casimiro Notevi Ver Mensaje
...
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; //<- Hago que mi DBGrid se redibuje, eso implica que
             // internamente se ejecuta el evento OnDrawColumnCell del DBGrid
end;
Espero haberte aclarado un poco el panorama.
Saludos...
__________________
"Pedid, y se os dará; buscad, y hallaréis; llamad, y se os abrirá." Mt.7:7

Última edición por rgstuamigo fecha: 07-01-2011 a las 22:10:56.
Responder Con Cita