Club Builder - Foros de discusión Club Builder
Foro de C++Builder en español
 
 FAQFAQ   BuscarBuscar   MiembrosMiembros   Grupos de UsuariosGrupos de Usuarios   RegistrarseRegistrarse 
 PerfilPerfil   Entra para ver tus mensajes privadosEntra para ver tus mensajes privados   EntrarEntrar 

¿Que hay después del OnPaint?

 
Publicar nuevo tema   Responder al tema    Foros de discusión -> Consultas
Ver tema anterior :: Ver tema siguiente  
Autor Mensaje
Mensaje    Asunto: ¿Que hay después del OnPaint? Responder citando

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
Ver perfil de usuario Enviar mensaje privado
Mensaje    Asunto: Responder citando

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
Ver perfil de usuario Enviar mensaje privado
Mensaje    Asunto: Responder citando

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
Ver perfil de usuario Enviar mensaje privado
Mensaje    Asunto: Responder citando

Puedes probar en OnShow o en OnActivate.
_________________
Un saludo

Necesitamos tu ayuda: Envía AI al 27595 (Coste 1,20 euros + IVA)
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email
Mensaje    Asunto: Responder citando

Aunque no acabo de entender la pregunta, creo que lo que te pasa es que quieres que progrese la progressbar (vaya redundancia) Laughing .
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
Ver perfil de usuario Enviar mensaje privado Dirección AIM
Mensaje    Asunto: Responder citando

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
Ver perfil de usuario Enviar mensaje privado
Mensaje    Asunto: Responder citando

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
Ver perfil de usuario Enviar mensaje privado MSN Messenger
Mensaje    Asunto: Responder citando

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 Very Happy .

Saludos
Volver arriba
Ver perfil de usuario Enviar mensaje privado Dirección AIM
Mensaje    Asunto: Responder citando

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
Ver perfil de usuario Enviar mensaje privado
Mostrar mensajes de anteriores:   
Cambiar a:  
No puedes publicar temas nuevos en este foro
No puedes responder a temas en este foro
No puedes editar tus mensajes en este foro
No puedes borrar tus mensajes en este foro
No puedes votar en las encuestas de este foro


Hosting WordPress Indedmedia desde 3,99 €
© 2002–2026 Club Builder · Funciona con phpBB.