![]() |
Problema al Pintar DBGrid
Yo hago lo siguiente, y me funciona perfecto, pero es como si temblara la grilla del DBGrid, como si todo el tiempo estuviera pintándose, y queda feo, como lo puedo solucionar???
|
Prueba con DBGrid1.DoubleBuffered:=True; (Con asignarlo en el OnCreate ya te vale).
Saludos. |
Cita:
|
Me temo que estés buscando el fallo en el sitio que no es.
Creo casi con toda seguridad que debes de tener un procedimiento en algún lado de tu aplicación que provoque o bien un cambio constante del puntero en la base de datos asociada que provoque el repintado continuo del DBGrid, o alguna otra rutina que te influya en dicho repintado. Por eso se producirá el parpadeo. Porque por la rutina OnDrawColumnCell que has puesto no debería hacértelo. Permíteme preguntarte si el código expuesto es la rutina OnDrawColumnCell completa. Puede ser también que dentro del propio OnDrawColumnCell tengas alguna parte de código que te provoque la llamada recursiva al propio método. |
Cita:
Saludos |
... mmmm, discreparía contigo de poner la consulta en el OnShow, ya que dicha consulta se ejecutará cada vez que, por ejemplo, pases de una aplicación a otra del propio windows, y tu form se 'oculte'. Al volver se ejecuta de nuevo el evento OnShow y se volverá a ejecutar la consulta sin ser necesario.
Pero esa sería otra discusión diferente. Aun así, no sé si eso puede o no tener influencia en tu 'parpadeo'. Sólo por probar, deberías sacar esa consulta del evento OnShow y colocarla por ejemplo en el OnCreate, que sólo se ejecutará una vez, al crear el Form. Hay varios temas en el foro sobre orden de llamada a los diferentes eventos OnShow, OnCreate, OnActivate y parecidos. Respecto a tu afirmación de que no haya nada en tu aplicación que llame al repintado del Grid, ese es precisamente el problema. Que no es que lo llames tu. Sino que el OnDrawColumnCell se ejecuta muchísimas veces sin tu ser consciente de ello. Lo llama el propio delphi cada vez que tenga que repintarse algo del Grid. Por ejemplo, al mover una ventana cualquiera de tu propia aplicación por encima del DBGrid, es necesario repintarlo, y por tanto se llama al evento OnDrawColumnCell. Por eso, seguramente sin darte cuenta, se estará llamando por algún lado a dicho evento, y es lo que te provoca el parpadeo del mismo. |
La franja horaria es GMT +2. Ahora son las 05:48:41. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi