![]() |
BaumStruktur in Treeview erstellen!
Folgendes Problem :
Ich habe eine Datei, in der bsp. folgende Pfade stehen : C:\Eigene Dateien\Eigene Dokumente\Proggen\a.html C:\Eigene Dateien\Eigene Dokumente\Proggen\test\b.html C:\Eigene Dateien\Eigene Dokumente\c.html Nun soll folgende Baumstruktur entstehen : -c:\ -Eigene Dateien -Eigene Dokumente c.html -Proggen a.html -test b.html Sieht jetzt n bisschen komisch aus, aber im Grunde soll es halt aussehen wie im Windoof Explorer :) Hat da jemand ne Idee ? Vielleicht sogar per Komponenteneigenschaften/methoden oder so ? Danke schonmal (ich sehe grade, dass man die Tabs nicht sieht, ich hoffe ihr könnt euch denken wie es aussehen soll) |
Re: BaumStruktur in Treeview erstellen!
Welche Delphi-Version verwendest du denn?
zumindest ab D7 gibt's die Komponente TShellTreeView. mit diesem Code kannst du alle Dateien/Verzeichnisse in einem Verzeichniss ermitteln:
Delphi-Quellcode:
function dirup(s:string):string;
begin try if s[length(s)]='\' then result:=s else result:=s+'\' except result:=s; end; end; procedure getdirsindir(const verzeichniss:string;var dirs:tstringlist); var sd:string; s:tsearchrec; i:integer; begin dirs:=tstringlist.Create; sd:=dirup(verzeichniss); if findfirst(sd+'*.*',faanyfile,s)<>0 then begin sysutils.findclose(s); exit; end; dirs.add(s.Name); while findnext(s)=0 do dirs.Add(s.name); i:=0; while i<dirs.count do begin if ((dirs[i]='..') or (dirs[i]='.')) then begin dirs.Delete(i); i:=i-1; end else if not directoryexists(sd+dirs[i]) then begin dirs.Delete(i); i:=i-1; end; inc(i); end; sysutils.findclose(s); end; function getfilesindir(const verzeichniss,filter:string;var files:tstringlist):extended; var sd:string; s:tsearchrec; i:integer; e:extended; flt:string; begin if filter='' then flt:='*.*' else flt:=filter; e:=0; sd:=dirup(verzeichniss); result:=0; files:=tstringlist.Create; if findfirst(sd+flt,faanyfile,s)<>0 then begin sysutils.findclose(s); exit; end; files.add(s.Name); while findnext(s)=0 do begin files.Add(s.name); e:=e+s.Size; end; i:=0; while i<files.count do begin if ((files[i]='..') or (files[i]='.')) then begin files.Delete(i); i:=i-1; end else if directoryexists(sd+files[i]) then begin files.Delete(i); i:=i-1; end; inc(i); end; result:=e; sysutils.findclose(s); end; function gettreeindir(const root:string;var files,dirs:tstringlist;filter:string):extended; var sd:string; i,j:integer; fls,unterverzeichnisse:tstringlist; flt:string; groesse:extended; begin groesse:=0; if filter='' then flt:='*.*' else flt:=filter; sd:=dirup(root); files:=tstringlist.Create; dirs:=tstringlist.Create; dirs.Add(sd); i:=0; while i<dirs.Count do begin getdirsindir(dirs[i],unterverzeichnisse); for j:=0 to unterverzeichnisse.Count-1 do dirs.Add(dirup(dirs[i])+unterverzeichnisse.Strings[j]); inc(i); end; for i:=0 to dirs.Count-1 do begin groesse:=groesse+getfilesindir(dirs[i],flt,fls); for j:=0 to fls.Count-1 do files.Add(dirup(dirs[i])+fls.strings[j]); end; result:=groesse; end; |
Re: BaumStruktur in Treeview erstellen!
Ich hab Vesrion 7! Unter was finde ich diese Komponente ?
Ok, hab sie, jetzt nur noch rausfinden wie es geht ;) Wenn du lust hast kannst mir ja ne kleine Instruction geben ;) |
Re: BaumStruktur in Treeview erstellen!
Mh, vielleicht habe ich auch mein Problem falsch beschrieben ...
ich möchte wirklich nur die Dateien in der Treeview angezeigt bekommen, die auch in der Datei stehen ... |
Re: BaumStruktur in Treeview erstellen!
Zitat:
|
Re: BaumStruktur in Treeview erstellen!
Ich bin mir nicht sicher was TShellTreeview kann!
Nur dein Quellcode verwirrt mich enorm... Als ich diesen Eintrag gemacht habe, habe ich gehofft, dass mir ev. jemand eine Komponente und ein paar Methoden vorschlägt, mit denen man etwas anfangen kann ... |
Re: BaumStruktur in Treeview erstellen!
Hallo,
Zitat:
![]() Wenn Du in der Funktion den Separator entsprechend eingibst, passt das. Ich hab den Tipp mal getestet, da fehlte irgendwo ein begin oder end im Code, kann mich aber daran erinnern das der Fehler schnell zu finden war. Kann aber auch sein das der Fehler im dem Code schon behoben ist. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:21 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz