Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 26-07-2006
muntasil muntasil is offline
Registrado
 
Registrado: jul 2006
Posts: 6
Poder: 0
muntasil Va por buen camino
Muchisimas gracias lo probaré y mañana te cuento.

De nuevo gracias.
Responder Con Cita
  #2  
Antiguo 27-07-2006
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 29
Lepe Va por buen camino
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:

Código Delphi [-]
procedure TForm1.IncPg(valor:integer);
begin
  progressbar1.position := valor;
  Form1.Update;
end;

La explicación de que guglu haya usado esa técnica creo deducir cual es:
Código Delphi [-]
procedure TForm_con_Barra.CMAfterShow(var Msg: TMessage);
begin
  progressbar1.position := valor;
  Form1.Update;// Delphi no nos deja usar esta 
//                linea en el evento OnShow (creo recordar)

end;
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.
Responder Con Cita
  #3  
Antiguo 27-07-2006
Avatar de gluglu
[gluglu] gluglu is offline
Miembro Premium
 
Registrado: sep 2004
Ubicación: Málaga - España
Posts: 1.455
Poder: 21
gluglu Va por buen camino
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 !
Responder Con Cita
  #4  
Antiguo 27-07-2006
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 29
Lepe Va por buen camino
Cita:
Empezado por gluglu
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.
Mi intención era otra totalmente distinta.

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.
Responder Con Cita
  #5  
Antiguo 28-07-2006
muntasil muntasil is offline
Registrado
 
Registrado: jul 2006
Posts: 6
Poder: 0
muntasil Va por buen camino
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.
Responder Con Cita
  #6  
Antiguo 28-07-2006
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 29
Lepe Va por buen camino
Busca en Torry.Net, seguro que encuentras una barra de progreso indefinida (como al iniciarse Windows) nunca se llena, solo pasa de izquierda a derecha 3 rayitas.

Incluso un Gif Animado podría servirte.

Saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.
Responder Con Cita
  #7  
Antiguo 28-07-2006
Avatar de gluglu
[gluglu] gluglu is offline
Miembro Premium
 
Registrado: sep 2004
Ubicación: Málaga - España
Posts: 1.455
Poder: 21
gluglu Va por buen camino
Dos cosas quiero comentar :

Para muntasil preguntarle si no se le ha olvidado incluir Application.ProcessMessages; en el bucle de aumento de la barra, porque si no lo incluyes la barra nunca aumentará.

Y para Lepe estamos de acuerdo que queremos hacer lo mismo. Yo tampoco le pongo borde ni botón de cierre. Y también cierro la ventana por código. Mi pregunta es ¿donde se cierra esa ventana por código? porque precisamente esa es la problemática.

Si quieres que un proceso se active automáticamente al crear la ventana tienes que poner el código en algún evento tal como el OnShow, y ahí en dicho evento no puedo incluir el cierre del Form por código, porque no me lo permite.

Me gustaría en dicho caso saber donde incluyes el código de cierre ?

Saludos
__________________
Piensa siempre en positivo !
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

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


La franja horaria es GMT +2. Ahora son las 06:47:07.


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
Copyright 1996-2007 Club Delphi