Afficher sous-dossiers dans un TTreeView

eclems Messages postés 104 Date d'inscription samedi 23 décembre 2000 Statut Membre Dernière intervention 9 mai 2013 - 2 janv. 2010 à 21:09
eclems Messages postés 104 Date d'inscription samedi 23 décembre 2000 Statut Membre Dernière intervention 9 mai 2013 - 4 janv. 2010 à 23:10
Bonsoir à tous,
voilà je suis a la recherche d'un bout de code pour permetre d'afficher les sous dossiers de mon application dans un TTreeView et d'afficher le contenu des dossier dans un TLitView (Nom Taille Date) J'ai parcouru google et autre sans résultat

Coordialement

Et bonne année

4 réponses

cs_Delphiprog Messages postés 4297 Date d'inscription samedi 19 janvier 2002 Statut Membre Dernière intervention 9 janvier 2013 32
3 janv. 2010 à 09:26
Voir les composants TShellTreeView et TShellListView dans l'onglet Exemples de la palette. Inutile de réinventer la roue...

8000 Lévriers 'galgos' par an sont torturés et massacrés en Espagne
May Delphi be with you

Pensez à cliquer sur Réponse acceptée lorsque la réponse vous convient.
0
eclems Messages postés 104 Date d'inscription samedi 23 décembre 2000 Statut Membre Dernière intervention 9 mai 2013
3 janv. 2010 à 12:52
Merci pour cette info mais ce n'est pas ce que j'attandais en recherchant un peu j'ai trouver cette procedure =>

procedure TForm1.GetDirectories(Tree: TTreeView; Directory: string; Item: TTreeNode; IncludeFiles: Boolean);
var
SearchRec: TSearchRec;
ItemTemp: TTreeNode;
begin
Tree.Items.BeginUpdate;
if Directory[Length(Directory)] <> '\' then Directory := Directory + '\';
if FindFirst(Directory + '*.*', faDirectory, SearchRec) = 0 then
begin
repeat
if (SearchRec.Attr and faDirectory = faDirectory) and (SearchRec.Name[1] <> '.') then
begin
if (SearchRec.Attr and faDirectory > 0) then
Item := Tree.Items.AddChild(Item, SearchRec.Name);
ItemTemp := Item.Parent;
GetDirectories(Tree, Directory + SearchRec.Name, Item, IncludeFiles);
Item := ItemTemp;
end
else if IncludeFiles then
if SearchRec.Name[1] <> '.' then
Tree.Items.AddChild(Item, SearchRec.Name);
until FindNext(SearchRec) <> 0;
FindClose(SearchRec);
end;
Tree.Items.EndUpdate;
end;


procedure TForm1.BitBtn1Click(Sender: TObject);
var
Node: TTreeNode;
Path: string;
Dir: string;
begin
Dir := 'c:\';
Screen.Cursor := crHourGlass;
TreeView1.Items.BeginUpdate;
try
TreeView1.Items.Clear;

GetDirectories(TreeView1, Dir, nil, True);
finally
Screen.Cursor := crDefault;
TreeView1.Items.EndUpdate;
end;
end;

Mais au debut du TTreeView j'amerais avoir home qui s'affiche et apres seulement les repertoire mais sans les fichiers ceuci doive ce placer dans un TlistView
0
Utilisateur anonyme
4 janv. 2010 à 15:07
Salut,

Eclems : Si je peux me permettre, pomper un code c'est bien, mais comprendre comment il fonctionne ca aide parfois .

Un début de solution :

procedure GetDirectories(Tree: TTreeView; Directory: string; Item: TTreeNode; IncludeFiles :Boolean);
var
  SearchRec: TSearchRec;
  ItemTemp: TTreeNode;
begin
  if Directory[Length(Directory)] <> '\' then Directory := Directory + '\';
  if FindFirst(Directory + '*.*', faDirectory, SearchRec) = 0 then
    begin
      repeat
        if (SearchRec.Attr and faDirectory = faDirectory) and (SearchRec.Name[1] <> '.') then
          Begin
            if (SearchRec.Attr and faDirectory > 0) then
            Item := Tree.Items.AddChild(Item, SearchRec.Name);
            ItemTemp := Item.Parent;
            GetDirectories(Tree,Directory + SearchRec.Name,Item,  IncludeFiles);
            Item := ItemTemp;
          end
        else if IncludeFiles then
          if SearchRec.Name[1] <> '.' then
          //Ici gérer l'ajout du fichier dans le TListView en utilisant SearchRec.Name
      until FindNext(SearchRec) <> 0;
      FindClose(SearchRec);
    end;
end;


procedure TForm1.Button1Click(Sender: TObject);
begin
  TreeView1.Items.BeginUpdate;
  Screen.Cursor := crHourGlass;
    try
      TreeView1.Items.Clear;
      TreeView1.Items.Add(Nil,'HOME');
      GetDirectories(TreeView1,'c:\',Nil, True);
    finally
      Screen.Cursor := crDefault;
      TreeView1.Items.EndUpdate;
    end;
end;


Puis pour la forme : Indente ton code et utilise les balises codes, lorsque tu donnes un bout de code .
0
eclems Messages postés 104 Date d'inscription samedi 23 décembre 2000 Statut Membre Dernière intervention 9 mai 2013
4 janv. 2010 à 23:10
merci franky enfaite c pour adapter ce bous de code dans une appli pour le partage de fichier voici un ptit exemple:

home
|_>eclems
|_>{les dossiers)
|_ autre client

Bin
|_>Liste des repertoire du prog


coordialement

et bonne galette des roix
0
Rejoignez-nous