Olá galera, nesta Quick Tips, irei continuar o exemplo do Client FTP, neste momento vamos implementar dois método importantes na nossa aplicação. Localize a seção Private da sua Unit, e vamos a declaração dos mesmos.

 

Antes, vamos adicionar algumas imagens no nosso TImageList, adicione apenas 3, a sua escolha, pois vamos usar estas logo nestes métodos, para quem esta com dúvidas você deve antes selecionar o TreeView, e ir na propriedades Images, e logo em seguida selecionar o Imagelist1, para ver o efeito que vamos mostrar logo abaixo.

 
private
{ Private declarations }
procedure ListarArquivos(NodePai : TTreeNode; Diretorio: String);
function CaminhoCompleto: String;
 

Como nossos métodos declarados, vamos usar a combinação de Teclas CTRL + Shift + C, para implementarmos estes.

 

Implementando o método CaminhoCompleto

 
function TFrmPrincipal.CaminhoCompleto: String;
var
   NoRaiz:TTreeNode;
   S : String;
begin
   if TreeView1.Selected = nil then
      Exit;
   S := '';
   NoRaiz := TreeView1.Selected;
   if not (NoRaiz = TreeView1.Selected.GetLastChild) then
      While NoRaiz.Parent <> nil do
      begin
         NoRaiz := NoRaiz.Parent;
         S := S + NoRaiz.Text + '/';
      end;
   Result := s + TreeView1.Selected.Text;
end;
   

Implementando o método ListarArquivos

 
procedure TFrmPrincipal.ListarArquivos(NodePai: TTreeNode; Diretorio: String);
var
   I, J: Integer;
   Node : TTreeNode;
begin
   Try
      IdFTP1.Connect;
      IdFTP1.ChangeDir(Diretorio);
      IdFTP1.List(nil);
      if NodePai <> Nil then
         if NodePai.HasChildren then
            NodePai.DeleteChildren;
      for I := 0 to IdFTP1.DirectoryListing.Count - 1 do
      begin
         Node := TTreeNode.Create(TreeView1.Items);
         Node.Text := IdFTP1.DirectoryListing.Items[I].FileName;
         if (Node.Text = '.') or (Node.Text = '..') then
            Continue;
         if NodePai = Nil then
            Node := TreeView1.Items.Add(Nil, Node.Text)
         else
            Node := TreeView1.Items.AddChild(NodePai, Node.Text);
         if IdFTP1.DirectoryListing.Items[I].ItemType = ditDirectory then
            Node.ImageIndex := 0
         else
            if IdFTP1.DirectoryListing.Items[I].ItemType = ditFile then
            begin
               Node.ImageIndex := 1;
               Node.SelectedIndex := 2;
            end;
      end;
   finally
      IdFTP1.Disconnect;
   end;
end;
 

Fico por aqui ate à próxima Quick Tips. Aguarde a próxima parte.

 

Um abraço.