![]() |
ttreeview für verzeichnissstruktur der Festpladde
Moin!
Bin Delphi - Anfänger und habe eine Frage zu treeview: Wie kann ich in ein treeview alle Verzeichnisse aller Laufwerke eines PC's einbringen? Ich hoffe da gibt es eine einfache lösungm ;-) ciao, Moin |
Nicht von mir:
Zitat:
Code:
[b]procedure[/b] TForm1.Einlesen(Tree : TTreeView; Verzeichnis : [b]String[/b]; Eintrag : TTreeNode; Mit_Dateien : Boolean);
[b]Var[/b] SearchRec : TSearchRec; EintragTemp : TTreeNode; [b]begin[/b] Tree.Items.BeginUpdate; [b]If[/b] Verzeichnis[length(Verzeichnis)]<>'\' [b]then[/b] Verzeichnis:=Verzeichnis+'\'; [b]If[/b] FindFirst(Verzeichnis+ '*.*', faDirectory, SearchRec)=0 [b]then[/b] [b]begin[/b] [b]repeat[/b] [b]If[/b] (SearchRec.Attr [b]and[/b] faDirectory = faDirectory) [b]and[/b] (SearchRec.[b]Name[/b][1] <> '.') [b]then[/b] [b]begin[/b] [color=#000080][i]//Eintrag ist ein Verzeichnis[/i][/color] [b]If[/b] (SearchRec.Attr [b]and[/b] faDirectory > 0) [b]then[/b] [color=#000080][i]//zum aktuellen Eintrag hinzufügen[/i][/color] Eintrag := Tree.Items.AddChild(Eintrag, SearchRec.[b]Name[/b]); [color=#000080][i]//Eintrag merken[/i][/color] EintragTemp := Eintrag.Parent; [color=#000080][i]//auf Untereinträge prüfen[/i][/color] Verzeichnisse_Einlesen(Tree,Verzeichnis + SearchRec.[b]Name[/b],Eintrag,Mit_Dateien); [color=#000080][i]//Eintrag wiederholen[/i][/color] Eintrag := EintragTemp; [b]end[/b] [b]else[/b] [color=#000080][i]//Eintrag ist eine Datei[/i][/color] [b]If[/b] Mit_Dateien [b]then[/b] [b]If[/b] SearchRec.[b]Name[/b][1] <> '.' [b]then[/b] Tree.Items.AddChild(Eintrag, SearchRec.[b]Name[/b]); [b]until[/b] FindNext(SearchRec)<>0; FindClose(SearchRec); [b]end[/b]; Tree.Items.EndUpdate; [b]end[/b];
Code:
[color=#000080][i]// TreeView1.Items.Clear;[/i][/color]
Verzeichnisse_Einlesen(TreeView1, 'C:\', [b]nil[/b], false); oder wenn zum Beispiel 'C:\' als oberster 'Knoten' im TreeView stehen soll, dann: [b]var[/b] TN : TTreeNode; .... .... [color=#000080][i]// TreeView1.Items.Clear;[/i][/color] TN := [b]nil[/b]; TN := TreeView1.Items.AddFirst(TN, 'C:\'); Verzeichnisse_Einlesen(TreeView1, 'C:\', TN, false); das gleiche geht natürlich auch z.B. mit 'D:\' oder anderen Laufwerksbuchstaben, man kann auch nur beispielsweise einen Ordner durchsuchen lassen, wie im folgenden Beispiel 'Eigene Dateien': [b]var[/b] TN : TTreeNode; .... [color=#000080][i]// TreeView1.Items.Clear;[/i][/color] TN := [b]nil[/b]; TN := TreeView1.Items.AddFirst(TN, 'C:\Eigene Dateien'); Verzeichnisse_Einlesen(TreeView1, 'C:\Eigene Dateien', TN, false); Zitat:
Code:
[b]procedure[/b] TForm1.Verzeichnisse_Einlesen(Tree : TTreeView; Verzeichnis : [b]String[/b]; Eintrag : TTreeNode);
[b]Var[/b] SearchRec : TSearchRec; EintragTemp : TTreeNode; [b]begin[/b] Tree.Items.BeginUpdate; [b]If[/b] Verzeichnis[length(Verzeichnis)]<>'\' [b]then[/b] Verzeichnis:=Verzeichnis+'\'; [b]If[/b] FindFirst(Verzeichnis + '*.*', faDirectory, SearchRec)=0 [b]then[/b] [b]repeat[/b] [b]If[/b] (SearchRec.Attr [b]and[/b] faDirectory > 0) [b]and[/b] (SearchRec.[b]Name[/b][1] <> '.') [b]then[/b] [b]begin[/b] Eintrag := Tree.Items.AddChild(Eintrag, SearchRec.[b]Name[/b]); EintragTemp := Eintrag.Parent; Verzeichnisse_Einlesen(Tree,Verzeichnis + SearchRec.[b]Name[/b],Eintrag); Eintrag := EintragTemp; [b]end[/b]; [b]until[/b] FindNext(SearchRec)<>0; FindClose(SearchRec); Tree.Items.EndUpdate; [b]end[/b]; Zitat:
|
Danke
Hab in der Online-Hilfe nichts gefunden |
Hi,
ich weiß jetzt nicht, welche Version du verwendest, aber in meiner gibt es TShellDir oder so ähnlich... Da ist das direkt drin... Chris |
erst ab d6.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:44 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