TTreeView

Résolu
mazimani1 Messages postés 7 Date d'inscription dimanche 26 septembre 2004 Statut Membre Dernière intervention 16 avril 2007 - 7 avril 2006 à 22:45
mazimani1 Messages postés 7 Date d'inscription dimanche 26 septembre 2004 Statut Membre Dernière intervention 16 avril 2007 - 16 avril 2007 à 09:14
Bonsoir à tou,
J'aurais besoin d'aide consernant le composant TTreeView. Je voudrais que mon appli scan un disque ou un dossiers et représente le résultat sous forme d'une arborescence. J'ai utilisé un exemple d'un tut utilisant une procedure récursive mais je n'arrive pas à intégrer correctement un TTreeView.
Merci pour votre aide.

8 réponses

cs_flagada Messages postés 60 Date d'inscription jeudi 8 mai 2003 Statut Membre Dernière intervention 18 février 2011
10 avril 2006 à 22:42
j'ai déjà fais un truc comme ça, c'est un peu bourrin mais ça marche :)
ça doit pouvoir s'optimiser...

//============================================================================//
{ Ajoute un répertoire (et ses sous-rep) à la treeview }
//----------------------------------------------------------------------------//
procedure TForm1.AjouteRep(const Rep: string);
var
t : String;
sr : TSearchRec;
i, r : Integer;
MyTreeNode1: TTreeNode;
begin
{ Lecture des sous-répertoires du répertoire Rep et ajout dans la Treeview }
{ On se limite à 4 sous-niveaux après le répertoire de base }
if DirectoryExists(Rep) then
begin
with TreeView1.Items do
begin
{ On Ajoute le répertoire de base à la TreeView }
MyTreeNode1 := Add(nil, Rep);
{ On indexe au dernier élément ajouté à la TreeView }
i := Count - 1;
while i < Count do
begin
{ On reconstruit le chemin du répertoire à partir de son niveau }
MyTreeNode1 := TreeView1.Items[i];
With MyTreeNode1 Do
begin
Case Level of
0: t := Text;
1: t := Format('%s%s\',[Parent.Text,Text]);
2: t := Format('%s%s\%s\',[Parent.Parent.Text,Parent.Text,Text]);
3: t := Format('%s%s\%s\%s\',[Parent.Parent.Parent.Text,Parent.Parent.Text,Parent.Text,Text]);
end;
end;
if MyTreeNode1.Level < 4 then
begin
{ Liste les sous-répertoires et les ajoute à la TreeView }
r := FindFirst(t + '*' , faDirectory, sr);
while r = 0 do
begin
if ((sr.Attr and faDirectory) <> 0) and (sr.Name <> '.') and (sr.Name <> '..') then
AddChild(MyTreeNode1, sr.Name);
r := FindNext(sr);
end;
FindClose(sr);

{ Si c'est un répertoire de base on l'expand }
if MyTreeNode1.Level = 0 then MyTreeNode1.Expand(False);
end;
{ On avance d'un cran dans la TreeView }
Inc(i);
end;
end;
end; // end if DirectoryExists(Rep)
end;
3