![]() |
![]() |
| Paypal | FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
|||||||
| Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Buscar | Temas de Hoy | Marcar Foros Como Leídos |
![]() |
|
|
Herramientas | Buscar en Tema | Desplegado |
|
|
|
#1
|
||||
|
||||
|
Mas que usar el evento OnPaintPanel que sólo se ejecuta cuando el
DBCtrlGrid necesita ser "repintado", probaría a utilizar el evento del DataSource: OnDataChange (que se ejecuta cada vez que cambian los datos, ya sea por que se produjo un desplazamiento, etc.), de esta manera te asegurarías siempre de que los paneles se mostrarán en el color correcto. Por ejemplo, si tienes el componente DataSource en el mismo formulario:
(En caso de que lo tengas en un módulo de datos podrías crearte en el módulo una propiedad pública de tipo "evento", TNotifyEvent, que se ejecutara cada vez que cambiaran los datos, y capturar, luego, esta propiedad en el formulario) Otra solución, tal vez más simple, sería probar a invocar al método Repaint del DBCtrlGrid cada vez que el panel recibe el foco (evento OnEnter) y ver si funciona. (Repaint obliga al DBCtrlGrid a "repintarse", así que, en teoría, tendría que funcionar). Saludos! Última edición por jmariano fecha: 21-01-2006 a las 23:39:51. |
|
#2
|
|||
|
|||
|
Gracias, pero no ha habido suerte.....
Hola, muy buenas. Antes de nada, muchas gracias por la respuesta.
Primeramente he probado con la última sugerencia de invocar al método Repaint en el evento OnEnter del Panel, pero no funciona. Seguidamente he probado a usar el método OnDataChange del DataSource, quitando el código de OnPaintPanel, pero misteriosamente...hace cosas muy raras. Finalmente, dejando el código que tenía OnPaintPanel y además añadiendolo también en OnDataChange, funciona bien para todos los casos menos para el primer registro. (Que debería de salir rojo, pero se pinta en verde hasta que clickeo en él). Antes de este cambio, además de ésto en las demás mesas rojas, al clickear por primera vez en ellas se pintaban en verde. Cosa que al añadir el código de OnDataChange ya no. No sé si me he explicado bien o no.... Alguna sugerencia? |
|
#3
|
|||
|
|||
|
de otra forma....
Hola, bueno, creo que me voy a volver loca!!
A ver, ahora he probado sólo con el siguiente código en el evento OnPaintPanel del DBCtrlGrid:
En vez de colorear el Panel, como antes, coloreo el DBCtrlGrid. Y cual es el resultado? Pues que si tienen que aparecer las mesas 1,2,3 y 15 en rojo. Aparecen en rojo las mesas 2,3,4 y 16. Alguna idea de por qué pasa ésto? Un saludo, |
|
#4
|
|||
|
|||
|
Una posible solución
Hola a todos! Tras un paseillo por foros y otros lugares de Internet, lo que he conseguido es lo siguiente:
He quitado el Panel de antes, y el DBText lo pongo directamente. Entonces con poner el siguiente código en el evento OnPaintPanel, funciona correctamente. (En vez de cambiar el color del panel, cambiamos el color del canvas, y luego lo dibujamos, ' o eso es lo que entiendo, vamos').
Lo dejo, aquí por si a alguien le sirve de algo. Aúnque lo haya solucionado de esta forma, si a alguien se le ocurre como arreglar el problema que tenía antes, o por qué pasaba eso, pues que lo comente. Más que nada, porque me he quedado con curiosidad.... Saludos, |
![]() |
| Herramientas | Buscar en Tema |
| Desplegado | |
|
|
|