Hi,
nach langem programmieren: hier der code:
Delphi-Quellcode:
procedure TFenster.GetDirs(const ADirectory: String; var Tree: TTreeView; Start: TTreeNode);
function ReadSubs(s: String): Boolean;
var srec: TSearchRec; found: Integer;
begin
RESULT := FALSE;
found := FindFirst(Slash(s)+'*.*', faDirectory, srec);
try
while not(RESULT) and (found=0) do begin
if ((srec.Attr and faDirectory) <> 0) and ((srec.Name <> '.') and (srec.Name <> '..')) then
RESULT := TRUE;
found := FindNext(srec);
end;
finally
FindClose(srec);
end;
end;
var rec: TSearchRec;
begin
if FindFirst(Slash(ADirectory)+'*.*', faDirectory, rec) = 0 then begin
try
repeat
if ((rec.Attr and faDirectory) <> 0) and ((rec.Name <> '.') and (rec.Name <> '..')) then
begin
with Tree.Items.AddChild(Start, rec.Name) do
if ReadSubs(Slash(ADirectory)+rec.Name) then
HasChildren := True;
end;
until FindNext(rec) <> 0;
finally
FindClose(rec);
end;
end;
end;
Delphi-Quellcode:
function TFenster.Slash(s: String): String;
begin
RESULT := s+'\'
end;
Delphi-Quellcode:
procedure TFenster.lDirExpanding(Sender: TObject; Node: TTreeNode;
var AllowExpansion: Boolean);
var i: Integer;
begin
for i := 0 to Node.Count-1 do
Node.getFirstChild.Delete;
GetDirs(Slash(Paren(Node, lDir)), lDir, Node);
Node.AlphaSort(FALSE)
end;
Delphi-Quellcode:
procedure TFenster.FormCreate(Sender: TObject);
begin
lDir.Items.BeginUpdate;
GetDirs('C:', lDir, lDir.Items.AddChild(nil, 'C:'));
lDir.Items.EndUpdate;
lDir.AlphaSort(TRUE);
lDir.Items.Item[0].Expand(FALSE);
end;
bitte helft mir, den code zu vereinfachen oder verbessern.
z.b. für ein leichteres einlesen bei schon vorhandenen einträgen (beim expandieren werden zuerst alle gelöscht, dann neu eingelesen) oder für leichteres erkennen, ob ein unterordner vorhanden ist.
PLEASE HELP!!