Pastas no TreeView

25/02/2005

0

Olá povo...
Pesquisei no forum e nao encontrei a solução, por isso coloco aki minha duvida:
Preciso colocar em um TreeView as sub pastas de um diretorio...
Por exemplo dentro de C: tem as pasta A, B, C quero que o treeView carregue A, B, C

Mas tudo em run time. Alguma dica?
[]s

Leonardo


Pleonardomv

Pleonardomv

Responder

Posts

25/02/2005

Gabriela

Existe um componente shelltreeview (na delphi 7 fica na aba samples), que funciona como o explorer, mostra as pastas do computador (de repente ele serve para o q vc quer). Vc pode configurar para ele qual a pasta que vai ser a raiz da treeview na propriedade root.

Ou então (se a solução acima nao servir) vc pode usar um procedimento de varredura de pastas, para ir inserindo na tree view, eu tenho um assim aqui:


//Busca todos os sub-diretorios dentro da pasta strNomeDir e insere eles como filho em pai
procedure BuscaSubDiretorios(strNomeDir: String;
  Pai: TTreeNode);
var
  sr: TSearchRec;
  FileAttrs: Integer;
  strNome: String;
begin
  try
  FileAttrs := faDirectory;
  strNome := strNomeDir;
  while strNome[Length(strNome)] = ´\´ do
    strNome := copy(strNome,1,length(strNome) - 1);
  if strNome[Length(strNome)] <> ´:´ then
    strNome := ExtractFileName(strNome)
  else
    strNome := copy(strNome,1,length(strNome) - 1);
  Pai := tvwEstrutura.Items.AddChild(Pai,strNome);
  if FindFirst(strNomeDir + ´*.*´, FileAttrs, sr) = 0 then
    begin
      repeat
        if (sr.Name <> ´.´) and (sr.Name <> ´..´) and
        ((sr.Attr > 15) and (sr.Attr < 32)) then   //verifica se o arquivo encontrado é uma pasta
        begin
          BuscaSubDiretorios(strNomeDir + sr.Name + ´\´,Pai);
        end;
      until FindNext(sr) <> 0;
      FindClose(sr);
    end;
  except
    MessageDlg(´Debug: Erro no procedimento BuscaSubDiretorios´,mtError,[mbOk],0);
  end;
end;


Espero ter ajudado.

Abraços, Gabriela.


Responder

25/02/2005

Pleonardomv

Gabriela, isto é tudo que queria, mas tá dando um erro na linha

 Pai := tvwEstrutura.Items.AddChild(Pai,strNome);


porque?

Procurei e nao encontrei.

Deus lhe pague


Responder

25/02/2005

Gabriela

Bom, é dificil dizer, pq eu uso ele num programa e funciona direito, sem erros...

o que vc esta passando como parametro no pai? De repente pode ser isso... vc tem que passar um nó ja existente na sua treeview.


Responder

25/02/2005

Pleonardomv

Pode ser isso sim. Me fala uma coisa: Como vc chama a função?


Responder

25/02/2005

Gabriela

m_pvtBuscaSubDiretorios(strNome + ´\´,tvwEstrutura.Selected);


Onde strNome é o caminho da pasta que quero. Ex: ´C:\arquivo de programas´.

Não testei o que acontece se não existir nenhum nó selecionado na treeview.


Acabei de perceber qual deve ser o erro. Tanto na chamada, quando dentro do procedimento ( na linha do erro), eu me refiro a minha treeview: tvwEstrutura .... vc tem que substituir pelo nome da sua treeview.

Acho q deve resolver.


Responder

25/02/2005

Pleonardomv

Era isso mesmo.... Funcionou bakana.

Sucesso sempre...

[]s
Leonardo


Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

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

Aceitar