Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Ordner in treeview/ listview ausgeben (https://www.delphipraxis.net/23475-ordner-treeview-listview-ausgeben.html)

Matthis 3. Jun 2004 18:45


Ordner in treeview/ listview ausgeben
 
Hallo,

habe ein problem mit Treeview/ Listview. Ich gebe in einem edit- feld ein Verzeichnis an und möchte dann das das komplette verzeichnis mit unterodner und datein im Treeview/ Listview aus gebenen wird. Wie kann ich das Anstellen?

S2B 3. Jun 2004 19:33

Re: Ordner in treeview/ listview ausgeben
 
Schau dir mal [cl="Verzeichnisse nach Dateien durchsuchen"]Verzeichnisse nach Dateien durchsuchen[/cl] an!

Mirilin 3. Jun 2004 19:35

Re: Ordner in treeview/ listview ausgeben
 
:hi:

Schau Dir sonst mal auch noch TShellTreeView und TShellListView an - wenn es die in D5 schon mit hat.

mfg Tobias

MathiasSimmack 3. Jun 2004 20:32

Re: Ordner in treeview/ listview ausgeben
 
Gibt´s erst ab D6. Die Alternative wären die entsprechenden Interfaces von Microsoft, die auch der Explorer selbst nutzt. Damit kann man das auch machen, und IMHO nutzen Shell-Tree- und -List-View intern auch nichts anderes.

Markus K. 3. Jun 2004 21:34

Re: Ordner in treeview/ listview ausgeben
 
Hallo Matthis,
hier ist eine Lösung von mir, welche du noch deinen Ansprüchen anpassen musst.
Delphi-Quellcode:
  public
    { Public-Deklarationen }
    Procedure BaumErzeugen(TreeNode:TTreeNode);
    Procedure BaumErstellen(Ordner,Wurzel:String);
    Function VerzeichnisErmitteln(Node:TTreeNode):string;
  end;

var
  Form1: TForm1;
  Wurzel: String='C:\';

implementation

{$R *.dfm}

procedure TForm1.BaumErstellen(Ordner,Wurzel:String);
var TreeNode:TTreeNode;
begin
     TreeView1.Items.Clear;
     TreeNode:=TreeView1.Items.AddChild(nil,Ordner);
     TreeView1.Items.AddChild(TreeNode,'dummy');
end;

procedure TForm1.TreeView1Expanding(Sender: TObject; Node: TTreeNode;
  var AllowExpansion: Boolean);
begin
     TreeView1.Items.BeginUpdate;
     Node.DeleteChildren;
     BaumErzeugen(Node);
     TreeView1.Items.EndUpdate;
end;

Procedure TForm1.BaumErzeugen(TreeNode:TTreeNode);
var Pfad:String;
    Suche:TSearchRec;
    TNode:TTreeNode;
begin
     if TreeNode=nil then Exit;
     Pfad:=Wurzel+VerzeichnisErmitteln(TreeNode);
     if FindFirst(Pfad+'*.*',faDirectory,Suche) = 0 then
     repeat if ((Suche.Attr and faDirectory)=faDirectory) and (Suche.Name<>'.') and (Suche.Name<>'..')
            then begin
                 TNode:=TreeView1.Items.AddChild(TreeNode,Suche.Name);
                 TreeView1.Items.AddChild(TNode,'dummy');
                 end
            else
            if Suche.Name[1] <> '.'
            then TNode:=TreeView1.Items.AddChild(TreeNode,Suche.Name);
     until FindNext(Suche)<>0;
     FindClose(Suche);
end;

Function TForm1.VerzeichnisErmitteln(Node:TTreeNode):String;
var S:String;
    TreeNode:TTreeNode;
begin
     Result:='';
     if Node=nil then Exit;
     S:=Node.Text;
     TreeNode:=Node;
     while TreeNode.Parent<>nil do
     begin
          TreeNode:=TreeNode.Parent;
          S:=TreeNode.Text+'\'+S;
     end;
     Result:=S+'\';
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
     BaumErstellen('Windows',Wurzel);
end;
Der Code erstellt einen Verzeichnisbaum in der TreeView-Komponente, dabei gibt der String Ordner den Ordner an, welcher angezeigt werden soll, und Wurzel den Pfad zu diesem Ordner. Wenn du nun einen Pfad angibst musst du nur noch den Pfad nach Ordner und Wurzel unterteilen.

Tschüß Markus

Nils_13 3. Dez 2004 20:29

Re: Ordner in treeview/ listview ausgeben
 
Nur wie zeige ich die ganze Festplatte in zwei TreeViews an (in dem 1 die Ordner und im 2 die Dateien)?

MathiasSimmack 3. Dez 2004 20:33

Re: Ordner in treeview/ listview ausgeben
 
Wie soll das aussehen? Ich meine, am grundsätzlichen Weg wird sich nichts ändern. Ob ein Tree-View, zwei ... oder mehr. Wozu brauchst du zwei? :gruebel: So eine Art Norton Commander? Dann schreibe eine Prozedur/Funktion, die beide Tree-Views nutzen können.


Edit: Ich bin der Meinung, dass du zu deinem Problem diverse Beiträge finden wirst. Aber ich würde für die Anzeige der Dateien eine List-View nehmen

Nils_13 3. Dez 2004 20:35

Re: Ordner in treeview/ listview ausgeben
 
Genaueres wo ich eigentlich hinaus will findest du in meinem Thema: Klick


Alle Zeitangaben in WEZ +1. Es ist jetzt 08: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