Ojalá me corrija alguien, pero tal como yo lo veo no es posible hacer un progressbar desde una descarga FTP porque no se te informa en ninguna parte de la cantidad de información enviada.
La forma de hacer eso tal como yo lo veo no es usar ftp sino usar sockets. En ese caso si que puedes enviar primero la longitud del fichero a enviar y luego paquete a paquete de manera que al recibir cada paquete puedas actualizar el progressbar. Eso funcionaría bien.
Si al descargar el fichero se va "actualizando" el tamaño, puedes saber su tamaño con Stat(Path).Size (ejemplo Stat("/home/pitusa/archivo.tgz").Size) y así compararlo con el valor del tamaño total conocido. Parecido a la idea de soplo.
si pero cuando lo haces con sockets hay un evento para cuando has recibido que es cuando deberías realizar la actualización del progress bar pero cuando haces un ftp ¿cuando actualizas la progressbar?
.......... entonces parece ser que es más eficiente hacerlo como dices.
Yo lo que había pensado es ver el tamaño del fichero cada vez que el evento timer de un timer se lanzara, claro mientras estubiese activa la descarga.