Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Internet (https://www.clubdelphi.com/foros/forumdisplay.php?f=3)
-   -   Cómo codificar una progressbar? (https://www.clubdelphi.com/foros/showthread.php?t=78529)

maycampana 26-04-2012 21:59:45

Cómo codificar una progressbar?
 
Ya estuve revoloteando con este tema en otra oportunidad y probé todo lo que encontré pero no consigo que mi progressbar corra a la velocidad de la subida de un backup de base de datos que ya se está transfiriendo perfectamente con un IdFTP, la progressbar corre pero muy rápido y la transferencia tarda unos minutos. Bueno no se que parámetro le va para frenarla, si alguien sabe mil millón de gracias.

roman 26-04-2012 22:03:55

Y, ¿qué tal si colocas el código que estás usando para actualizar la barra?

// Saludos

maycampana 27-04-2012 15:42:14

Progressbar
 
Si Roman, tenes razón. Probé varias opciones que encontré y esta anda pero muy rápido, aquí va
Código Delphi [-]
Begin
   IdFTP1.OnWork:=IdFTP1Work;
   IdFTP1.Host:= 'nombreHost';
   IdFTP1.User:= username;
   IdFTP1.Password:= password;
   IdFTP1.Port:= 21;
Try
   IdFTP1.Connect;
except
   ShowMessage('ATENCION, problema de conexión');
end;
If IdFTP1.Connected then
    begin
        ProgressBar1.Position:=0;
        while ProgressBar1.Position < ProgressBar1.Max do
             ProgressBar1.StepIt;
     end; 
 
también probé este otro pero no hacía nada
begin
    ProgressBar1.Position:=0;
    ProgressBar1.Max:= IdFTP1.Size(nombredelarchivo) div 1024;
    IdFTP1.Get(nombredelarchivo(path),path),true);
    IdFTP1.Disconnect;
    IdFTP1.Free;
end;

Casimiro Notevi 27-04-2012 16:15:01

Recuerda poner los tags al código fuente, ejemplo:




.

Casimiro Notevi 27-04-2012 16:17:36

Mira los eventos del componente idFtp que estás usando, creo recordar que en uno de ellos te indica el porcentaje de trabajo realizado, y es ahí donde debes darle el valor a la barra de progreso.

roman 27-04-2012 16:59:54

Es como dice Casimiro. Tal como lo tienes, tu barra no tiene nada que ver con lo que realiza el componente. No estoy seguro de los nombres pero creo que hay tres eventos involucrados: OnWorkBegin, OnWork y OnWorkEnd. El primero te informa del tamaño total de los bytes que se transfieren y es donde ajustas la propiedad Max de la barra. El segundo evento se genera cada tanto indicando cuántos bytes se han transferido. Entonces es donde actualizas la barra, pero no con un simple StepIt sino ajustando su propiedad Position de acuerdo al número de bytes. Y el último evento te avisa cuando ya terminó de transferirse el archivo.

// Saludos


La franja horaria es GMT +2. Ahora son las 21:38:53.

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