Mírate esta función:
Copia ficheros con Progreso.
Código:
procedure CopyFiles(const Source,Destination: String);
var
SHFileOpStruct : TSHFileOpStruct;
begin
if FileExists(Source) then
begin
FillChar(SHFileOpStruct,SizeOf(TSHFileOpStruct),#0);
with SHFileOpStruct do begin
Wnd:=Application.Handle;
wFunc:=FO_COPY;
fFlags:=FOF_ALLOWUNDO;
hNameMappings:=nil;
pFrom:=PChar(Source+#0+#0);
pTo:=PChar(Destination+#0+#0);
end;
ShFileOperation(SHFileOpStruct);
end;
end;
Un Saludo.