Hi
Hier die paar Zeilen, die in Frage kommen.
Hiermit lese ich die obersten Ordner nach den Laufwerken ein:
Code:
procedure TForm1.showdir(Node:TTreeNode;s:string);
var
datei: TSearchRec;
begin
If FindFirst(s, faDirectory, datei) = 0
then
begin
try
repeat
If (datei.Name = '.') or (datei.Name = '..') or (datei.Attr and fadirectory = 0)
then Continue;
TreeView1.Items.AddChild(Node, datei.Name);
until Findnext(datei) <> 0;
finally
FindClose(datei);
end;
end;
end;
Dann der Code vom TreeViewExpanding:
Code:
procedure TForm1.TreeView1Expanding(Sender: TObject; Node: TreeNode; var AllowExpansion: Boolean);
begin
dir(Node, true);
Node.AlphaSort;
end;
Die Funktion dir liest dabei nur weitere Ordner ein Level tiefer aus. Im Prinzip wie ShowDir.
Code:
procedure TForm1.dir(Node:TTreeNode; Ordner:boolean);
var
s, pfad: string;
i: integer;
N: TTreeNode;
datei: TSearchRec;
...
begin
if ordner then
begin
TreeView1.Items.BeginUpdate;
Node.DeleteChildren;
end
else
begin
...
end;
N := Node;
s := '';
while N <> nil do
begin
s := N.Text + #92 + s;
N := N.Parent;
end;
pfad:=s;
s := pfad + '*.*';
if FindFirst(s,faDirectory,datei) = 0 then
begin
try
repeat
if (datei.Name='.')or(datei.Name='..') then
Continue;
if (datei.Attr and fadirectory > 0) and (ordner = true) then
begin
N := TreeView1.Items.AddChild(Node, datei.Name);
showdir(N, pfad + datei.Name + '\*.*');
end;
if (datei.Attr and fadirectory = 0) and (ordner = false) then
begin
...
end;
until Findnext(datei)<>0;
finally
FindClose(datei);
end;
end;
if ordner then
TreeView1.Items.EndUpdate
else
begin
...
end;
end;
by Daniel B; Code-Form.