![]() |
![]() |
| 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
|
||||
|
||||
|
Crea un nuevo formulario que sea 'Modal'.
Utiliza un procedimiento CMAfterShow (puedes buscar ayuda adicional sobre este tema en el foro).
En el evento OnShow del nuevo form deberás poner
Y en el procedimiento CMAfterShow ya ejecutas el código que quieras incrementando la barra o cualquier código que quieras ejecutar. Al final del código deberás poner Self.Close; para que cuando se termine de ejecutar tu código la ventana se cierre sola y vuelvas a la ventana que lo llamó.
Al ser una ventana modal, se impedirá clickear con el ratón en ningún otro sitio más que dentro de esa ventana, y al no poner ningún botón de cierre o parecido, hasta que no finalice el proceso de tu código, la ventana con la barra no se cerrará. Si quieres mejorarlo, puedes interceptar la tecla ESC y ejecutar un nuevo evento que cierra tu ventana con barra, y/o deberás interceptar Ctrl-F4 propio del windows para decidir que quieres hacer si el usuario quiere cerrar la ventana con la barra de progreso mientras se esté ejecutando. Espero haberte ayudado. Saludos
__________________
Piensa siempre en positivo ! |
|
#3
|
|||
|
|||
|
Muchisimas gracias lo probaré y mañana te cuento.
De nuevo gracias. |
|
#4
|
||||
|
||||
|
En realidad el mensaje cmAfterShow se usa cuando se quiere hacer algo que lo impide el evento que se quiere usar, Me explico:
Si queremos ocultar una ventana en el evento OnShow, Delphi nos dirá que no podemos hacerlo, en ese caso creamos el mensaje anterior y ya podemos ocultar la ventana en el AfterShow. En este caso, creo que se puede hacer de otra forma y ahorrarnos un mensaje. Simplemente llamas a la rutina con ShowModal, y creas un procedimiento público en esa ventana para incrementar la barra de progreso:
La explicación de que guglu haya usado esa técnica creo deducir cual es:
__________________
Si usted entendió mi comentario, contácteme y gustosamente, se lo volveré a explicar hasta que no lo entienda, Gracias. |
|
#5
|
||||
|
||||
|
El problema que se presenta con la opción que dá Lepe es que la ventana que creas se va a quedar abierta hasta que el usuario opte por cerrarla.
Lo que entiendo que se pretende es que se cree una nueva ventana con una barra de progreso que vaya indicando algo, y que al finalizar el proceso se cierre sola. Y el problema entonces es que en el evento OnShow (o alguno parecido) no puedes cerrar la ventana con Close, por lo que a mi entender se hace necesario el método con AfterShow.
__________________
Piensa siempre en positivo ! |
|
#6
|
||||
|
||||
|
Cita:
Creas la ventana con ShowModal, con la rutina IncPg vas aumentando el ProgresBar, y cuando el proceso haya terminado, cierras la ventana por código (Yo no le pongo ni bordes ni botón de cerrar, pero siempre uso un try ..finally para que no se quede abierta en caso de excepciones). Así no tienes que escribir código en la ventana del ProgressBar, puedes reutilizar esa ventana en todas tus aplicaciones.
__________________
Si usted entendió mi comentario, contácteme y gustosamente, se lo volveré a explicar hasta que no lo entienda, Gracias. |
|
#7
|
|||
|
|||
|
Hola, Gracias por vuestros comentarios.
De momento la solución dada por Lepe no me sirve en este caso concreto, ya que lo que deseo es que el formulario con la barra de progreso independientemente de la tarea que se esté haciendo en el otro form, se vaya rellenando, y cuando llegue la barra al final, volvemos a empezar, así hasta que se acabe la tarea. Como veis, la barra de progreso se va rellenando, no tiene mucho en cuenta el tiempo estimado en terminar la tarea, pero por lo menos parece que se están haciendo operaciones. El problema de hacerlo como dice Lepe, está en que una sentencia (una llamada a una dll que envia un xml y recibe otr xml de respuesta) no sé cuanto tiempo puede tardar, y lo de ir aumentando la barra de progreso en este caso se quedaria "parada" hasta terminar la tarea, de forma que seguiria pareciendo que la aplicacion se queda colgada. En cuanto a la solucion de Gluglu, tambien la he probado y no me funciona correctamente, me aparece el formulario de la barra de progreso pero está estático. De momento he optado por mostrar un mensaje fijo en un formulario a modo de mensaje, cuando vuelva de vacaciones volveré a pensar en alguna alternativa para hacerlo. Quizás seria conveniente hacerlo mediante un hilo (THread)??? Saludos a todos y buen verano. |
![]() |
| Herramientas | Buscar en Tema |
| Desplegado | |
|
|
Temas Similares
|
||||
| Tema | Autor | Foro | Respuestas | Último mensaje |
| Barra de progreso con TNMFTP | pborges36 | Internet | 1 | 30-06-2006 00:50:03 |
| Realizar una barra de progreso | pepecharlie67 | Varios | 3 | 29-12-2005 13:08:39 |
| Mostrar progreso de descarga de IndyFTP con barra de progreso | devicer | Internet | 2 | 05-12-2005 14:59:32 |
| barra de progreso en developer | Sostratov | Oracle | 1 | 03-09-2004 15:48:43 |
| ayuda con un barra de progreso (Gauge) | jorch_yr | Internet | 1 | 31-12-2003 10:49:38 |
|