Ver Mensaje Individual
  #7  
Antiguo 15-11-2004
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
Cita:
Empezado por AGAG4
siendo que la condicion la hago en el evento OnColExit de la Columna #3
A pesar de que hiciste caso omiso de mi comentario lo intentaré nuevamente.

No puedes establecer la condición en un momento dado, tienes que establecerla en cualquier momento.

Las celdas en un grid no se pintan porque en algún momento les digamos "píntense de rojo", debemos decírselos en todo momento. Dicho de otra forma, el pintado de las celdas de un grid funciona como sigue:

Cuando el grid debe ser repintado, sea porque la ventana se descubre, se mueve alguna columna, se hace un deslazamiento, cambian de posición las filas, etc., etc., etc., la VCL genera el el evento OnDrawColumnCell. Tú no tienes manera de saber en qué momento vas a recibir este evento. Por ello el código en tu evento debe estar preparado para cualquier situación.

Si tú estableces una condición en el evento OnColExit, quizá se pinte como deseas durante un momento, es decir, mientras el grid no se repinte por alguna otra acción (como abrir un nuevo registro). En el próximo repintado, tu evento debes estar listo para dibujar la celda correcta.

En todas las versiones que has puesto, no hay ninguna condición que sea específica de la celda que quieres, si acaso hay de la columna, pero no de la fila.

En fin, lo que yo veo es que hay un error de concepción en lo que piensas que hace el evento OnDrawColumnCell y te recomiendo que revises desde el punto de vista que te doy.

// Saludos
Responder Con Cita