Te respondo con gusto, porque tu pregunta me resolvio un problema. (pero con ftp1.get)
Yo para calcular el progreso hago lo siguiente:
Defino 2 variables privadas del formulario
Código Delphi
[-]
Var
TamanoDescarga, TotalDescargado : Integer;
En la primera almaceno el total del tamaño (en bytes) de los archivos a descargar (en tu caso a subir).
La segunda contendrá el total de bytes de los archivos YA BAJADOS.
Primero fijas el valor:
Código Delphi
[-]
TamanoDescarga := xxxxxxxx; prg.Max := TamanoDescarga;
Luego hay que modificar los eventos del FTP: FTP1Work y FTP1AfterGet
Código Delphi
[-]
procedure TfActualizacionOnLine.FTP1Work(Sender: TObject;
AWorkMode: TWorkMode; const AWorkCount: Integer);
begin
prg.Position := TotalDescargado + AWorkCount;
end;
procedure TfActualizacionOnLine.FTP1AfterGet(ASender: TObject;
VStream: TStream);
begin
TotalDescargado := TotalDescargado + vStream.Size;
end;
Para determinar el tamaño de c/u de los archivos uso:
Código Delphi
[-]
Var
f : file;
Begin
AssignFile(f,NombreArchivo);
Reset(f,1);
Tamano := FileSize(f);
CloseFile(f);
End;
Es posible que no puedas usar el AfterGet porque trabajas con FTP.Put, pero despues de subir el archivo X puedes sumar
TotalDescargado := TotalDescargado + TamanoArchivo;
y te dará el mismo resultado.
Espero te sirva