Listar no treeView diretorios do ftp conforme for expandindo.
Boa tarde. Como ir listando os diretórios de um ftp no treeview conforme eu for expandindo?
Tenho essas duas funções mas ela lista todos de uma vez. Assim fica lento.Então o ideal seria ir carregando conforme eu for expandindo.
Fico no aguardo.
Obrigado.
Tenho essas duas funções mas ela lista todos de uma vez. Assim fica lento.Então o ideal seria ir carregando conforme eu for expandindo.
function TdlgPedidosExternosSincronizar.lista(IdFTP: TIdFTP; port: integer;
host, user, senha: string; TreeView: TTreeView): boolean;
var
Node: TTreeNode;
begin
Node := nil;
TreeView.Items.Clear;
IdFTP.host := host;
IdFTP.port := port;
IdFTP.Username := user;
IdFTP.Password := senha;
try
IdFTP.Connect;
listaSub(IdFTP, '/', Node, TreeView);
finally
IdFTP.DisconnectNotifyPeer;
end;
end;
function TdlgPedidosExternosSincronizar.listaSub(IdFTP: TIdFTP;
diretorio: string; NodeRaiz: TTreeNode; TreeView: TTreeView): boolean;
var
I: Integer;
ListItems: TIdFTPListItems;
Node: TTreeNode;
Nome: string;
begin
if IdFTP.Connected then
begin
Node := NodeRaiz;
IdFTP.ChangeDir(diretorio);
IdFTP.List;
ListItems := TIdFTPListItems.Create;
ListItems.Assign(IdFTP.DirectoryListing);
for I := 0 to ListItems.Count - 1 do
begin
Nome := ListItems.Items[I].LocalFileName;
NodeRaiz := TreeView.Items.AddChild(Node, Nome);
if(ListItems.Items[I].ItemType = ditDirectory) then
begin
listaSub(IdFTP, diretorio + Nome + '/', NodeRaiz, TreeView);
NodeRaiz := Node;
end;
end;
ListItems.Free;
end;
end;
Fico no aguardo.
Obrigado.
Marcelo Urso
Curtidas 0