Accueil > Forum > > > > Arborescence dans un Treeview
Arborescence dans un Treeview
mardi 26 décembre 2006 à 22:03:17 |
Arborescence dans un Treeview

Francky23012301
|
Salut à tous,
Ca fait bien longtemps que j'ai demandé de l'aide mais là je seche.
J'ai un client FTp et je souhaite récupérer l'arborescende d'un serveur sur Un treeview. Je récupère l'ensemble des chemins complets dans un TStringList. Mais là ou je seche c'est pour créer l'arborescence dans un Treeview sans faire de doublon
J'ai bien pensé à utiliser un TStringList pour séparer les différents dossiers et fichier relatifs au chemin complet :
Var
ListFolder : TStringList;
IndexList,IndexStLt, IndexTv,Index : Cardinal;
AFile : String;
CNode : TTreeNode;
Begin
//Pour tout les fichiers faire
For IndexList:=0 to (Listbox1.Items.Count-1) do
Begin
//Première étape, on sépare les différentes parties du chemin
ListFolder:=TStringList.Create;
AFile:=Listbox1.Items.Strings[IndexList];
Repeat
If Pos('\',AFile)>0 then
Begin
ListFolder.Add(Copy(AFile,0,Pos('\',AFile)));
Delete(AFile,1,Pos('\',AFile));
End
Else
Begin
ListFolder.Add(Copy(AFile,1,length(AFile)));
Delete(AFile,1,length(AFile));
End;
Until AFile='';
Mais après le néant total.
Please Help me
|
|
mardi 26 décembre 2006 à 22:20:20 |
Re : Arborescence dans un Treeview
|
mardi 26 décembre 2006 à 22:43:27 |
Re : Arborescence dans un Treeview

Francky23012301
|
Salut Candator
Oui je veux bien trier mais les choses ne sont pas si simples : la preuve ca fait 15 jours que je cherche et envain.
|
|
mercredi 27 décembre 2006 à 13:41:31 |
Re : Arborescence dans un Treeview
|
mercredi 27 décembre 2006 à 14:40:23 |
Re : Arborescence dans un Treeview

Oniria
|
Bonjour,
Je pense que ta méthode de départ n'est pas correcte en effet, dans une arborescence, il peut y avoir plusieurs nom de dossiers identique mais n'ayant pas le même pére : exemple : c:\WINDOWS\TEMP\ et c:\TEMP, il y a bien deux dossiers TEMP mais pas au même endroit. Je pense que tu devrais faire un tri pas sur des nom de dossiers distincts, mais sur le chemin complet par cette méthode (elle est peut-être pas optimisée mais elle devrait fonctionner) : Au début, on classe les chemins de manière à avoir tous les dossiers parents ensemble, ensuite on tri de manière à avoir tous les fils identique ensemble, puis tous les petit fils et ainsi de suite. En gros, tu refais la même que celle sur le serveur pour obtenir toute l'arorescence. Je te donne un petit exemple :
Soit à classer : C:\TEMP\ACROREAD\,C:\WINDOWS\, C:\WINDOWS\TEMP\,C:\TEMP\, c:\WINDOWS\TEMP\GIMP\,c:\WINDOWS\TEMP\WORD\...
On effectue d'abord le classement sur le dossier parent donc sur TEMP ou WINDOWS est on doit obtenir : c:\TEMP\ACROREAD\ c:\TEMP\ c:\WINDOWS\ c:\WINDOWS\TEMP\ c:\WINDOWS\TEMP\GIMP\ c:\WINDOWS\TEMP\WORD\
ensuite, on travaille sur les fils : soit pour les deux première ligne ACROREAD et <null>, il faut les inverser de manière à avoir le chemin le plus cour possible classé le plus avant possible (important dans la création du TreeView).
Une fois tous classé comme ca, il suffit de créer les fils en fonction des nom de répertoire en effet au début, il faut créer un pére qui s'appelle TEMP, ensuite, ACROREAD est le fils de TEMP, puis un pere qui s'apelle WINDOWS, puis un fils TEMPS, puis un fils de TEMP qui s'appelle GIMP et ainsi de suite. Ton TreeView va se remplir facilement...
J'espére que j'ai été assez clair...
Bon codage
Oniriabot
|
|
mercredi 27 décembre 2006 à 14:40:32 |
Re : Arborescence dans un Treeview

Francky23012301
|
tu as pas compris Candatar:
Je récupère l'arborescence d'un serveur FTP dans un TStringList. Je découpe en suite chaque Item dans un nouveau TStringList.
Exemple :
C:\Jobs\CV.txt
C:\Jobs\LM.txt
C:\DelphiFr\Sources\MonSource.exe
Devient pour le second Item
C:\
Jobs\
LM.txt
Je souhaite utiliser un treeview pour les sous répertoires et fichiers sans doublon. Si un simple trie reglait le probleme, je l'aurais deja fais je pense ;).
Merci
|
|
mercredi 27 décembre 2006 à 16:23:49 |
Re : Arborescence dans un Treeview

Oniria
|
Bonjour,
Mais je ne vois pas le probléme, pourquoi s'acharner à créer un stringlist par chemin car tu vas te retrouver avec des doublons de partout et pour les traiter, il faudra faire une fonction qui relis le TreeView entièrement à chaque ajout d'un chemin pour justement éviter les doublons et connaitre le pére du chemin en commun. Par ma méthode, le principal avantage est que on trie une fois puis la récupération de l'arbre est très simple.
Mais bon, ton choix reste ton choix.
J'espére que tu as réussit au moins à remplir ton treeview même avec des doublons ?
J'espére que je t'ai ouvert les yeux.
Oniria
|
|
mercredi 27 décembre 2006 à 17:45:01 |
Re : Arborescence dans un Treeview

cantador
|
Ouich, ben j'avais pas compris le problème.  Tu as certainement consulté le forum.. Il y a quelques sources à propos de recup FTP + FAQ Mais peut-être as-tu déjà tout lu ?  cantador 
|
|
mercredi 27 décembre 2006 à 18:39:42 |
Re : Arborescence dans un Treeview

Francky23012301
|
Lol Oniria : Comme les choses semblent si facile j'ai envie de te dire : "DEMONSTRATION POUR LE REMPLISSAGE DU TREEVIEW.
Pas de blem Candator : oui oui j'ai tout lu bien et tout ;).
|
|
jeudi 28 décembre 2006 à 03:45:26 |
Re : Arborescence dans un Treeview

WhiteHippo
|
Réponse acceptée !
Hello Est ce que cela pourrait correspondre à tes attentes ?
procedure AjoutRepertoire( TV : TTreeview ; const Repertoire : String ) ; var Node : TTreeNode ; ParentNode : TTreeNode ; S : String ; Drive : String ; Dir : String ; SubDir : String ; FileName : String ; Liste : TStrings ; i,j : integer ; AlreadyIn : Boolean ; begin Liste := TStringList.Create ; try Drive := ExtractFileDrive ( Repertoire ) ; FileName := ExtractFileName ( Repertoire ) ; Dir := ExtractRelativePath ( Drive, Repertoire ) ; Delete( Dir, Pos( Filename, Dir )+1, length(FileName ) ) ;
if ( Drive <>'' ) then Liste.Add( Drive ) ; repeat SubDir := copy( Dir, 1, Pos( PathDelim, Dir )-1 ) ; if ( SubDir<>'' ) then Liste.Add( SubDir ) ; Delete( Dir, Pos( SubDir, Dir ), length(SubDir)+1 ) ; until ( Length(SubDir)=0 ) ; if ( FileName<>'' ) then Liste.Add( FileName ) ;
ParentNode := TV.TopItem ; for i:=0 to Liste.Count-1 do begin S := Liste.Strings[i] ;
AlreadyIn := false ; Node := ParentNode ;
if ( i>0 ) then begin Node := Node.GetNext ; end ;
while ( Node <> Nil ) do begin AlreadyIn := AnsiCompareText( Node.Text, S ) = 0 ; if ( AlreadyIn ) then begin ParentNode := Node ; Break ; end ; Node := Node.GetNextSibling ; end ; if ( not AlreadyIn ) then begin if ( i=0 ) then ParentNode := TV.Items.Add (ParentNode, S ) else ParentNode := TV.Items.AddChild (ParentNode, S ) end ; end ; finally Liste.Free ; end; end ;
// Fonction utilisée pour les tests procedure TForm1.Button1Click(Sender: TObject); begin TreeView1.Items.Clear ; AjoutRepertoire( TreeView1, 'D:' ) ; AjoutRepertoire( TreeView1, 'C:\Jobs\CV.txt' ) ; AjoutRepertoire( TreeView1, 'E:\test\' ) ; AjoutRepertoire( TreeView1, 'C:\Jobs\LM.txt' ) ; AjoutRepertoire( TreeView1, 'C:\DelphiFr\Sources\MonSource.exe' ) ; AjoutRepertoire( TreeView1, 'E:\test' ) ; end;
Cordialement.
L'imbécile prétentieux est celui qui se croit plus intelligent que ceux qui sont aussi bêtes que lui.
|
|
Cette discussion est classée dans : treeview, begin, tstringlist, afile, listfolder
Répondre à ce message
Sujets en rapport avec ce message
restoration de sauvegarde [ par stephanesvh ]
salut a tous j'ai un soucis pour la restoration des données sauvegarder, quelqu'un peut m'aider ?? procedure TForm1.btnSaveEditsClick(Sender: TO
Pb TStringList [ par tony_73 ]
Bonjour,Voila j'ai un message d'erreur "...indice de listes hors limites(1)... voici mon code ou j'ai l'erreur : procedure TForm1.ButtonGenererClick(
TStringList erreur [ par ronoobresil ]
Bonjour,Je suis débutant sous Delphi...Ça fait pas mal de temps que j'avais pas fait de programmationEt, bien évidemment comme tout bon débutant, j'ai
Pb Listview [ par NeoNeo ]
Salut,Je cherche a enregistrer et reouvrir une ListView est-ce que quelq'un pourais m'aider sachant que j'ai tenter avec SaveToFileetLoadToFile mais c
Treeview [ par hippocampe2912 ]
Bonjour,j'ai Delphi4.je souhaiterai imprimer un treeview.En passant par l'intermédiare d'un RichEdit je peux imprimer le texte de ce treeview mais je
Arbre équilibré [ par Pallas4 ]
Bonjour j'aimerais programmé un arbre équilibré maismon programme plante. IP cute me dit que des données sont dans le tas mais ne peuvent être atteint
KYLIX3 et initialization [ par barbulille ]
encore moi! et oui bon j'ai créée une fiche & surchargé la méthode AfterConstruction afin qu'elle appelle une fonction située dans un autre module(mod
treeview [ par magicwc ]
je recherche un composant de type treeview, qui puisse me permettre de faire comme avec les favori, cad me permettre d'insérer des élément entre les é
pb d'affichage d'un TChart [ par Pegase20 ]
bonjour, J'affiche une autre fiche qui contient un graphique (créé à l'aide d'un TChart) quand je clique sur un bouton.Mon pb c'est que le graph ne
MDI Filles dans une DLL [ par DarkSky ]
..::= DarkSky =::..Salut almi,j'ai exactement le même problème que toi (Hint) sur l'utilisation de MDI Filles dans une DL
Livres en rapport
|
Derniers Blogs
TECHDAYS PARIS 2012 : SESSION PLEINIèRE JOUR 3TECHDAYS PARIS 2012 : SESSION PLEINIèRE JOUR 3 par ROMELARD Fabrice
Speaker: Bernard Ourghanlian Cette session est comme chaque jour transmise en live par BrainSonic, et j'ai donc suivi cette troisième pleinière par ce moyen sur mon iPad . Elle est dédiée comme chaque année à la mise en perspective de l'é...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice MISHRA READER : UN LECTEUR RSS TRèS ZUNE STYLE EN OPEN SOURCE !MISHRA READER : UN LECTEUR RSS TRèS ZUNE STYLE EN OPEN SOURCE ! par Vko
Hier durant une session dédiée aux Techdays 2012, j'ai eu le plaisir d'annoncer la sortie de la Béta 2 de Mishra Reader. C'est quoi ? Pour les utilisateurs, c'est une vraie expérience de lecture de flux RSS sur Windows. Rien à voir avec les produit...
Cliquez pour lire la suite de l'article par Vko [FRAMEWORK 4] LES TASKS ET LE THREAD UI[FRAMEWORK 4] LES TASKS ET LE THREAD UI par fathi
Je viens de passer quelques temps au TechDay's et j'ai pu voir pas mal de session intéressante. Par contre une chose m'a un peu étonné lors de certaines de ces sessions qui abordaient les améliorations du framework .NET (donc le 4.5) : en gros, bea...
Cliquez pour lire la suite de l'article par fathi WORKFLOW FOUNDATION 3 A UN PIED DANS LA TOMBEWORKFLOW FOUNDATION 3 A UN PIED DANS LA TOMBE par JeremyJeanson
Depuis déjà un an, je conseille vivement les utilisateurs de Workflow Foundation 3 à migrer vers la version 4. L'information qui va suivre ne devrait donc pas trop prendre au dépourvu les personnes qui m'ont suivi. Je profite de ce poste, pour faire le re...
Cliquez pour lire la suite de l'article par JeremyJeanson TECHDAYS PARIS 2012 : NOUVELLES TENDANCES DU POSTE DE TRAVAIL - BRING YOUR OWN PCTECHDAYS PARIS 2012 : NOUVELLES TENDANCES DU POSTE DE TRAVAIL - BRING YOUR OWN PC par ROMELARD Fabrice
Speakers: Thierry Rapatout, Antoine Petit et Xavier Trebbia Cette session entre dans le cadre des RDV Décideurs des TechDays 2012, elle est liée à la consumérisation de l'IT et la mise en place du "DeskTop as a Service" dans de plus en ...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice
Logiciels
Academy System (17.2.1.0)ACADEMY SYSTEM (17.2.1.0)Logiciel de gestion des établissements.
- élèves/étudiants (inscription, dossier, absence...)
-... Cliquez pour télécharger Academy System Easy-Planning (1.0.0.1)EASY-PLANNING (1.0.0.1)Basé sur les mêmes principes que MyPlanning, Easy-Planning permet de créer des plannings sous la ... Cliquez pour télécharger Easy-Planning COLLECTOR PLUS (3.00B)COLLECTOR PLUS (3.00B)COLLECTOR PLUS version 3.00B est un logiciel utilisant une base de données alimentée par :
- L... Cliquez pour télécharger COLLECTOR PLUS PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V7.4)PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V7.4)PONAMEDIA TV DEVIENS HELLLOOO FLASH
LA TV SUR VOTRE ORDINATEUR.
Toute une plateforme Multi... Cliquez pour télécharger PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO LettresFaciles 2011 (8.0.0.1)LETTRESFACILES 2011 (8.0.0.1)LettresFaciles est un logiciel facilitant la création et la rédaction de lettres types.
Son inte... Cliquez pour télécharger LettresFaciles 2011
|