AGB  ·  Datenschutz  ·  Impressum  







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

ShellTreeView "expandieren"

Ein Thema von F.W. · begonnen am 22. Dez 2003 · letzter Beitrag vom 5. Feb 2004
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von F.W.
F.W.

Registriert seit: 28. Jul 2003
Ort: Zittau
636 Beiträge
 
#1

ShellTreeView "expandieren"

  Alt 22. Dez 2003, 21:17
Wie kann ich einen kompletten TShellTreeView aufklappen, ich mache es mit einer While do Schleife:
Delphi-Quellcode:
While I <= ShellTreeView.Items.Count-1 do begin
      ShellTreeView.Items[I].Expanded := True;
      Inc(I);
end;
Aber das dauert so lange! Hat das schonmal jemand versucht, als er als Root den Arbeitsplatz eingestellt hatte?

Danke schonmal!
  Mit Zitat antworten Zitat
Benutzerbild von mirage228
mirage228

Registriert seit: 23. Mär 2003
Ort: Münster
3.750 Beiträge
 
Delphi 2010 Professional
 
#2

Re: ShellTreeView "expandieren"

  Alt 22. Dez 2003, 21:19
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
David F.
  Mit Zitat antworten Zitat
Benutzerbild von toms
toms
(CodeLib-Manager)

Registriert seit: 10. Jun 2002
4.648 Beiträge
 
Delphi XE Professional
 
#3

Re: ShellTreeView "expandieren"

  Alt 22. Dez 2003, 21:39
Zitat:
Aber das dauert so lange! Hat das schonmal jemand versucht, als er als Root den Arbeitsplatz eingestellt hatte
Mal ehrlich gesagt: was macht das für einen Sinn, den gesamten Arbeitsplatz aufzuklappen?
Der Baum wird ja dann riesengross!!

Zitat:
Wie kann ich einen kompletten TShellTreeView aufklappen,
So geht's schneller:

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;
Thomas
  Mit Zitat antworten Zitat
Benutzerbild von F.W.
F.W.

Registriert seit: 28. Jul 2003
Ort: Zittau
636 Beiträge
 
#4

Re: ShellTreeView "expandieren"

  Alt 22. Dez 2003, 21:48
Zitat:
Mal ehrlich gesagt: was macht das für einen Sinn, den gesamten Arbeitsplatz aufzuklappen?
Naja, eigentlich hast du Recht, aber mein Programm soll mir eine Verzeichnisliste daraus erstellen und ich kann nur alle "Äste" abklappern, wenn er komplett ausgeklappt ist!
  Mit Zitat antworten Zitat
Benutzerbild von mirage228
mirage228

Registriert seit: 23. Mär 2003
Ort: Münster
3.750 Beiträge
 
Delphi 2010 Professional
 
#5

Re: ShellTreeView "expandieren"

  Alt 22. Dez 2003, 22:14
Für Verzeichnislisten kannst auch die Funktion nehmen:

Delphi-Quellcode:
  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;
mfG
mirage228
David F.
  Mit Zitat antworten Zitat
Benutzerbild von F.W.
F.W.

Registriert seit: 28. Jul 2003
Ort: Zittau
636 Beiträge
 
#6

Re: ShellTreeView "expandieren"

  Alt 22. Dez 2003, 23:17
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!!!!!!!!!
  Mit Zitat antworten Zitat
Benutzerbild von Sharky
Sharky

Registriert seit: 29. Mai 2002
Ort: Frankfurt
8.252 Beiträge
 
Delphi 2006 Professional
 
#7

Re: ShellTreeView "expandieren"

  Alt 23. Dez 2003, 08:53
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;
Stephan B.
"Lasst den Gänsen ihre Füßchen"
  Mit Zitat antworten Zitat
Benutzerbild von F.W.
F.W.

Registriert seit: 28. Jul 2003
Ort: Zittau
636 Beiträge
 
#8

Re: ShellTreeView "expandieren"

  Alt 23. Dez 2003, 14:19
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?
  Mit Zitat antworten Zitat
Benutzerbild von F.W.
F.W.

Registriert seit: 28. Jul 2003
Ort: Zittau
636 Beiträge
 
#9

Re: ShellTreeView "expandieren"

  Alt 3. Feb 2004, 20:29
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!

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!
  Mit Zitat antworten Zitat
Benutzerbild von mirage228
mirage228

Registriert seit: 23. Mär 2003
Ort: Münster
3.750 Beiträge
 
Delphi 2010 Professional
 
#10

Re: ShellTreeView "expandieren"

  Alt 3. Feb 2004, 20:32
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
David F.

May the source be with you, stranger.
PHP Inspection Unit (Delphi-Unit zum Analysieren von PHP Code)
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 18:17 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