Form no refresca el movimiento de una imagen por codigo
Hola:
Tengo un problema y no entiendo como solucionarlo. La cuestión es que muevo una imagen por mi formulario por código, cuando se da una determinada condición, a través de la propiedad Left o Top y este cambio no se visualiza en la pantalla, sin embargo cuando este movimiento lo ejecuto pulsando un botón (con el código anterior) se visualiza correctamente. Use refresh en el formulario, en la imagen y nada. Muchas gracias por combatir mi ignorancia. Saludos. |
Todos los mensajes de repintado tienen poca prioridad en windows, si lo mueves por código varias veces, solo verás la última posición, quizás sea eso.
Si mueves más controles, quizás te interese Form1.Update, ya que forzaría el repintado de toda la ventana y ésto hace que se "refresquen" todos y cada uno de los componentes que tenga. Saludos |
Disculpen que me cole en la fiesta,:D
Y si se observa cierto efecto molesto al "repintar" la ventana (o parte de ella) debería cambiarse a true la propiedad DoubleBuffered del Form (o tal vez con la del componente baste). Al ser una propiedad pública y no publicada, no se la encuentra disponible en el Inspector. Debe hacerse por código. Tengo entendido que a partir de la versión 2007 o 2009 recién se pasó esta propiedad a published. Saludos, |
Aun no visualiza el salto
Ese un solo movimiento el que hago:
Image1.Left := Image1.Left + 200; con ningún Update funcionó ni en el Form, ni en Image1; lo solucioné a medias poniendo el código para mover en el evento OnResize se que no es lo correcto, será porque es una imagen PNG? voy a convertira a JPG y les cuento. Saludo Perdón, debo aclarar algo: el código para el movimiento lo ejecuto al crear el formulario y al darse cierta condición la imagen se desplaza a una posición u otras, tendrá algo que ver? |
Cita:
No creo que se deba al formato de la imagen; al menos intuyo que es poco probable. Me inclino a que es a causa de OnCreate. Sería oportuno que muestres el código tal cual lo tienes. Saludos, |
Pega tu imagen a un panel para que veas la diferencia
y programa en el evento OnActivate
y si no pureba estas lineas
|
La franja horaria es GMT +2. Ahora son las 23:22:19. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi