| Ver tema anterior :: Ver tema siguiente |
| Autor |
Mensaje |
bosoft Master

Registrado: 23 Oct 2005Mensajes: 342
|
Publicado: Mie 27 Feb, 2008 5:51 pm Asunto: ¿Que hay después del OnPaint? |
|
|
Hola
Necesito ejecutar una función, pero el OnPaint no me sirve, puesto que cada vez que le doy a un ->Update() se ejecuta entero y se anida demasiado. Tiene que ser después porque así le doy tiempo a pintar el Form.
¿Alguna idea?
Saludos, Bosoft. |
|
| Volver arriba |
|
 |
Cri_sys Master


Registrado: 13 Feb 2004Mensajes: 198Ubicación: Maringá, Brazil
|
Publicado: Mie 27 Feb, 2008 6:49 pm Asunto: |
|
|
El problema del OnPaitn es q se ejecutara varias veces dependiendo de las actualizaciones q tenga el Form! upongo q te servira en el OnCreate
Salu2 _________________ Read what I mean, not what I write! |
|
| Volver arriba |
|
 |
bosoft Master

Registrado: 23 Oct 2005Mensajes: 342
|
Publicado: Mie 27 Feb, 2008 11:05 pm Asunto: |
|
|
Gracias por tu respuesta, pero no me sirve puesto que no llega a mostrar el form completo y debe ser después para que el usuario sepa que el programa está trabajando y no bloqueado.
De momento lo he solucionado declarando una variable global bool y ejecutando el paint solo una vez. Aún así el form aparece a "medio" hacer y eso que solo tiene 2 StaticText y un progressbar
Gracias
Saludos, Bosoft |
|
| Volver arriba |
|
 |
Angel Master


Registrado: 15 Abr 2003Mensajes: 2311Ubicación: Toledo (España)
|
|
| Volver arriba |
|
 |
frios Lt

Registrado: 20 Nov 2005Mensajes: 79Ubicación: España
|
Publicado: Jue 28 Feb, 2008 5:44 pm Asunto: |
|
|
Aunque no acabo de entender la pregunta, creo que lo que te pasa es que quieres que progrese la progressbar (vaya redundancia) .
Si es así prueba la función:
Application->ProcessMessages();
Con ella consigues darle la posibilidad a windows de ejecutar todas las solicitudes que tenga en cola y devolver el control a tu programa. Úsala despues de darle la nueva posición a la progressbar.
Suerte |
|
| Volver arriba |
|
 |
bosoft Master

Registrado: 23 Oct 2005Mensajes: 342
|
Publicado: Jue 28 Feb, 2008 6:32 pm Asunto: |
|
|
Gracias Angel, pero no funciona. El form aparece en pantalla a medio "formar" y el user no ve lo que esta ocurriendo.
Frios: Lo que quiero es hacer un pequeño programa que arranque solo, haga una tarea que puede durar 3 o 4 minutos y pare. Para que la tarea se autoejecute cuando el form esté a la vista (todo completito) lo puse en el onpaint, pero entra en un bucle indefinido al progresar el ProgressBar. Entonces pregunté que se autoejecuta al terminar el OnPaint y en eso estoy, aunque, como ya expliqué mas arriba, con una variable bool he conseguido que no se ejecute la función indefinidamente
Gracias
Saludos, Bosoft. |
|
| Volver arriba |
|
 |
Tor Master


Registrado: 22 Mar 2005Mensajes: 269Ubicación: obera, misiones, argentina
|
Publicado: Vie 29 Feb, 2008 10:15 am Asunto: |
|
|
Hola en cualquiera de los eventos que te indica Angel, puedes usar Repaint() sobre el formulario q se ve a medias y si te siguen los problemas puedes usarlo sobre cada objeto que se ve a medias, luego llamas a tu funcion.
saludos tor _________________ Un experto es aquel que ya ha cometido todos los errores posibles en una materia muy concreta.
(Niels Bohr) |
|
| Volver arriba |
|
 |
frios Lt

Registrado: 20 Nov 2005Mensajes: 79Ubicación: España
|
Publicado: Vie 29 Feb, 2008 10:53 am Asunto: |
|
|
Tambien puedes usar un Timer, no es lo mas elegante pero funciona.
Le das un segundo de tiempo, y en el OnTimer lo desactivas (enabled=false) para que no vuelva a ejecutar la función cada segundo y le pones la función.
Con esto le das tiempo a cargar la pantalla y a que se dibuje todo antes de que comience el trabajo duro .
Saludos |
|
| Volver arriba |
|
 |
bosoft Master

Registrado: 23 Oct 2005Mensajes: 342
|
Publicado: Vie 29 Feb, 2008 3:23 pm Asunto: |
|
|
Gracias a todos por vuestra ayuda, pero viendo las pruebas que he hecho, me quedo como estoy.
Declaro un bool = true global. Cuando entro en onpaint la primera vez, la paso a false y ejecuto la función. Puedo entonces hacer cuantos updates quiera sin problemas y de momento funciona bien, aunque con "fallitos" de presentación
Gracias de nuevo.
Saludos, Bosoft. |
|
| Volver arriba |
|
 |
|