![]() |
ShellTreeView "expandieren"
Wie kann ich einen kompletten TShellTreeView aufklappen, ich mache es mit einer While do Schleife:
Delphi-Quellcode:
Aber das dauert so lange! Hat das schonmal jemand versucht, als er als Root den Arbeitsplatz eingestellt hatte? :kotz:
While I <= ShellTreeView.Items.Count-1 do begin
ShellTreeView.Items[I].Expanded := True; Inc(I); end; Danke schonmal! |
Re: ShellTreeView "expandieren"
Das dauert halt lange, da ich mal annehme dass du mehr als 100 folder bzw. subfolder auf der festplatte hast.
alternativ könntest du das ganze in einem thread ausführen und das treeview mit synchronize() auf dem laufenden halten. mfG mirage228 |
Re: ShellTreeView "expandieren"
Zitat:
Der Baum wird ja dann riesengross!! Zitat:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var i: Integer; begin i := 0; ShellTreeView1.Items.BeginUpdate; try while I <= ShellTreeView1.Items.Count - 1 do begin ShellTreeView1.Items[I].Expanded := True; Inc(I); end; finally ShellTreeView1.Items.EndUpdate; end; end; |
Re: ShellTreeView "expandieren"
Zitat:
|
Re: ShellTreeView "expandieren"
Für Verzeichnislisten kannst auch die Funktion nehmen:
Delphi-Quellcode:
mfG
procedure FileList(sPath, sExt: string; bRecurse: boolean; List: TStrings);
var f, f2: TSearchRec; begin if FindFirst(sPath + '*.*', faAnyFile, f) = 0 then begin if FindFirst(sPath + sExt, faAnyFile, f2) = 0 then begin List.Add(sPath + f2.Name); while FindNext(f2) = 0 do if (f2.Name <> '.') and (f2.Name <> '..') then List.Add(sPath + f2.Name); end; while FindNext(f) = 0 do if ((f.Attr and faDirectory) = faDirectory) and (f.Name <> '.') and (f.Name <> '..') and (bRecurse) then FileList(sPath + f.Name + '\', sExt, bRecurse, List); end; {if} FindClose(f); end; mirage228 |
Re: ShellTreeView "expandieren"
Das geht irgendwie schneller! Aber ich habe mir schon meinen Kopf zerbrochen, wie ich das ganze wieder in einen normalen TreeView bringe, denn ich wills mir ja mit Komfort angucken!
Allerdings zerbrach ich mir meinen Kopf über meine Methode. Es ist nett, dass du dir die Arbeit gemacht hast, vielleicht greife ich irgendwann darauf zurück, allerdings nicht jetzt gleich, da das Ding für den Zweg, für den es geproggt worden ist total ausreicht. Es soll mir nämlich nur das Verzeichnis von Half Life bei nem Kumpel auslesen, damit ich ihm sagen kann, wo er welche Dateien noch hinpacken muss, damits bei ihm richtig gut läuft! Danke!!!!!!!!! |
Re: ShellTreeView "expandieren"
Hai F.W.,
schneller wird es wohl nicht werden. Es müssen ja alle Verzeichnisse durchwühlt werden. Du kannst nur deinen Code einfacher machen ;-)
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
begin ShellTreeView1.Items.BeginUpdate; ShellTreeView1.Items[0].Expand(true); ShellTreeView1.Items.EndUpdate; end; |
Re: ShellTreeView "expandieren"
Gut, aber viel schneller geht's damit auch nicht. Aber wie gesagt, es ist ja eigentlich nur für diesen einen Zweck.
Eine Frage noch: Kann man bei mirage s function auch eine Anzeige für Fortschritt mit einbauen? |
Re: ShellTreeView "expandieren"
Ich bin wieder auf diesen Thread zurückgekommen, weil ich das Programm nochmal für einen anderen Zweck brauche, dummerweise müssen nun ein paar mehr Verzeichnisse eingelesen werden.
Ich habe ein neues komplett überarbeitetes Programm geschrieben, welches die Funktion von mirage228 benutzt. Mein Problem ist es jetzt das ganze zurück in einen TTreeView zu bekommen. Ich versuche es jetzt schon 2 Tage lang, ohne Erfolg! :cry: Das Hauptproblem ist, dass bei dieser Funktion nicht erst alle Ordner und dann alle Dateien, sondern alles durcheinander ausgelesen wird. Habt ihr noch ne' Idee? Ich bin am verzweifeln! :wall: :cry: :wall: |
Re: ShellTreeView "expandieren"
Hi,
du könntest versuchen die Liste irgendwie zu sortieren, (alles was faDirectory ist dorthin und der rest woanders hin). Um das ganze in einen TreeView zu kriegen müsstest du das ganze mach "\" zerpflücken und dann Ebene für Ebene alles in die TreeView einfügen. Sonst kannst du dir ja mal die Borland Sources zu "DirectoryListBox" anschauen. mfG mirage228 |
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:28 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