AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

TTreeView: Verzeichnisliste

Ein Thema von Aike · begonnen am 5. Okt 2005 · letzter Beitrag vom 5. Okt 2005
Antwort Antwort
Aike

Registriert seit: 2. Okt 2004
319 Beiträge
 
#1

TTreeView: Verzeichnisliste

  Alt 5. Okt 2005, 16:28
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 (Link), aber das dauert ziemlich lange und ich möchte keine 60sek warten, bis meine 10GB-Platte aufgelistet wurde :-/ Der Code von dort sieht so aus:
Delphi-Quellcode:
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;
Ich wäre für Hilfe/Links echt dankbar!

Grüße,
Aike
Achim
  Mit Zitat antworten Zitat
Benutzerbild von gsh
gsh

Registriert seit: 24. Okt 2004
1.542 Beiträge
 
Delphi XE Architect
 
#2

Re: TTreeView: Verzeichnisliste

  Alt 5. Okt 2005, 16:35
Es geht wahrscheinlich nicht viel schneller als du des da schon hast aber vieleicht hilft dir die Komponente ShellTreeView (Kategorie: Beispiele)
Alex
"Sage nicht alles, was du weißt, aber wisse alles, was du sagst!" Matthias Claudius
"Wer sich über Kritik ärgert, gibt zu, daß er sie verdient hat." Tacitus
  Mit Zitat antworten Zitat
Aike

Registriert seit: 2. Okt 2004
319 Beiträge
 
#3

Re: TTreeView: Verzeichnisliste

  Alt 5. Okt 2005, 16:41
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]
Achim
  Mit Zitat antworten Zitat
Benutzerbild von Jens Schumann
Jens Schumann

Registriert seit: 27. Apr 2003
Ort: Bad Honnef
1.644 Beiträge
 
Delphi 2009 Professional
 
#4

Re: TTreeView: Verzeichnisliste

  Alt 5. Okt 2005, 17:40
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.
I come from outer space to save the human race
  Mit Zitat antworten Zitat
Marphy

Registriert seit: 24. Feb 2005
162 Beiträge
 
Delphi 7 Professional
 
#5

Re: TTreeView: Verzeichnisliste

  Alt 5. Okt 2005, 18:15
Hallo Aike,
wenn du nicht alles von Grund auf neu programmieren willst, könnten dir die VirtualShellTools weiterhelfen...

Gruß, Marco
Marco
Wo ein Wille ist, ist auch ein Weg. Aber wo ein Weg ist, ist nicht unbedingt auch ein Wille...
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:32 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz