PAGUE 6 MESES
LEVE 12 MESES
GARANTIR DESCONTO

Fórum Listar no treeView diretorios do ftp conforme for expandindo. #533868

07/10/2015

0

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.
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

Marcelo Urso

Responder

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar