PDA

Ver la Versión Completa : Form que muestre un progreso del estilo: Copiando


vejerf
30-04-2010, 15:59:27
Muy buenas a todos,

Estoy desarrollando una aplicación cliente/servidor y cuando el cliente se conecta al servidor quiero que le transfiera una serie de datos. Mientras esto ocurre quisiera mostrar la típica pantalla que muestra un progreso en una transferencia de ficheros.

¿Hay alguna llamada al API de windows que sirva para esto o tengo que crearme yo mi ventana personalizada?

Muchas gracias a tod@s!!!

cloayza
30-04-2010, 17:18:46
Creo que lo mejor seria que te crearas tu propia ventana de progreso...

Es muy facil de implementar...y querada a tu gusto...

Mas o menos la logica es esta...

Var
frmProgress:TfrmProgress;
begin

frmProgress:=TfrmProgress.Create(NIL);
frmProgress.Gauge.Max:=Maximo_de_datos_a_transferir;
frmProgress.Gauge.Position:=0;
frmProgreso.Show;

While Not Finaliza_Transferencia() Do
Begin
frmProgress.Gauge.Position:=frmProgress.Gauge.Position+Incremento;
...
...
End;
frmProgress.Close;
frmProgress.Free;


Saludos.

vejerf
03-05-2010, 12:50:32
Hola Cloayza,

Lo primero darte las gracias por tu aportación ya que al final me decidía a hacerlo yo mismo como me sugieres. Por otra parte me encontré con una dificultad y es que no se me creaba el formulario y se quedaba el programa colgado.

Después de darle varias vueltas he llegado a la conclusión de que es debido a que yo creo el formulario de la siguiente forma:

La aplicación es un cliente/servidor y cuando el cliente se conecta quiero que le transfiera una serie de datos al servidor y mientras transcurre la transferencia quiero mostrar el cartelito de transferencia en curso.
Pues bien, el cliente se conecta al servidor y este le devuelve un id de conexión. A continuación comienza la transferencia y aquí es donde se me queda colgado.

La cosa es que he sacado el formulario fuera de la conexión tcp por así decirlo. Recibo el id de conexión y pongo un flag activo. Por otra parte tengo un timer en el cliente y si este flag está activo comienza la transferencia y muestra el formulario sin problemas. Cuando termina la trasferencia desactivo el flag y todos tan amigos.

Seguro que hay formas más eficientes de hacerlo... pero al menos me funciona!!!

Gracias!!!