![]() |
TTreeView: Verzeichnisliste
Hallöchen,
ich kann mir vorstellen, dass das hier schon 100 mal gefragt wurde, aber mit einschlägigen Suchbegriffen bin ich nicht weit gekommen :-( Ich möchte einfach nur gerne, dass in einem TTreeView die Verzeichnisse eines Laufwerks aufgelistet werden. Gerne dürfen die Laufwerke auch die ersten Knotenpunkte im TreeView sein. Nachdem ein Ordner angeklickt wurde, sollte dann in einem Listview (oder Listbox?) die Dateien angezeigt werden, die in diesem Ordner liegen. *Rauft sich die Haare* Das kann doch so schwer nicht sein :-( Ich habe schon was gefunden ( ![]()
Delphi-Quellcode:
Ich wäre für Hilfe/Links echt dankbar!
public
procedure FillTreeView(Path: String; RootNode: TTreeNode); end; var Form1: TForm1; implementation procedure TForm1.FillTreeView(Path: String; RootNode: TTreeNode); var sResult: Integer; SearchRec: TSearchRec; TempNode: TTreeNode; begin sResult := FindFirst(Path+'\*.*',faDirectory,SearchRec); while sResult = 0 do begin if (SearchRec.Name = '.') or (SearchRec.Name = '..') then begin sResult := FindNext(SearchRec); Continue; end; if SearchRec.Attr and faDirectory = faDirectory then begin TempNode := TreeView1.Items.AddChild(RootNode,SearchRec.Name); FillTreeView(Path+'\'+SearchRec.Name,TempNode); end; sResult := FindNext(SearchRec); end; FindClose(SearchRec); end; procedure TForm1.Button1Click(Sender: TObject); begin FillTreeView(Edit1.Text,TreeView1.Items.Add(nil,Edit1.Text)); end; Grüße, Aike |
Re: TTreeView: Verzeichnisliste
Es geht wahrscheinlich nicht viel schneller als du des da schon hast aber vieleicht hilft dir die Komponente ShellTreeView (Kategorie: Beispiele)
|
Re: TTreeView: Verzeichnisliste
Ich möchte eigentlich nicht, dass der Benutzer den Namen etc. in dem TreeView ändern kann :-/ Da ist ja der ganz normale Windows-Explorer quasi drin.
[edit] Na ja, gut, wenn's nicht anders geht ... Kann ich denn wenigstens eine Progress-Bar einfügen, damit ein Fortschritt erkennbar ist? Eher nicht, oder? Dann müsste ich erst wissen, wie viele Verzeichnisse es gibt und bei jedem Verzeichnis dann ein Prozent dazu geben etc. Außerdem ergibt sich das neue Problem, dass ich den aktuellen Pfad herausfinden muss. Wenn ich also die Verzeichnisstruktur "C:\Dokumente und Einstellungen\Aike\Desktop\" habe, muss TreeView herausfinden, dass es gerade dort ist, denn eigentlich kennt es ja nur den letzten Knotenpunkt, und zwar "\Desktop\" :-( [/edit] |
Re: TTreeView: Verzeichnisliste
Hallo,
es geht sogar wesentlich schneller. Z.Z. liest Aike alle Verzeichnisse ein. das kann bei großen Platten mit vielen Verzeichnissen lange dauern. Die Lösung ist: Lese nur die erste Ebene ein. D.h verzichte aufdie Rekursion. Wenn der Anwender auf ein Verzeichnis im TTreeView klickt. dann rufe FillTreeView ausgehend von diesem Verzeichnis auf. So werden nur die Verzeichnisse gelesen, die der Anwender sehen will. |
Re: TTreeView: Verzeichnisliste
Hallo Aike,
wenn du nicht alles von Grund auf neu programmieren willst, könnten dir die ![]() Gruß, Marco |
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:40 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-2025 by Thomas Breitkreuz