Würde es so machen: (Pseudocode)
Code:
function DownloadFile(const SrcFilename, DestFilename: String);
begin
IdFTP:get(...);
end;
procedure ButtonClick;
var
...;
begin
...;
for i := 0 to Listbox1.Items.Count - 1 do
begin
if Listbox1.Items[i].Selected then
DownloadFile(SeverPath+Listbox1.Items.Strings[i], Localpath+Listbox1.Items[Strings[i]);
end;
...;
Und wenn du es dann in einem Thread haben willst startest du den Thread in der Schleife und rufst in der Thread-Funktion einfach
DownloadFile auf.