Registriert seit: 28. Jul 2003
Ort: Zittau
636 Beiträge
|
Re: TreeView:einträge selbst speichern
9. Feb 2006, 23:28
Probier mal folgenden Code, den ich gerade geschrieben habe, da ich mich auch wieder damit auseinandersetzen musste
Der Code ist für Text-Dateien in der Form
Code:
C:\WINDOWS\system
C:\WINDOWS\system32
D:\Eigene Dateien\...
D:\Eigene Dateien\...\Eigene Bilder\...
...
Delphi-Quellcode:
//Zum Kopieren von einer Position bis zu einer anderen Position
function CopyFT(Eingabe: String; Von, Zu: Integer): String;
begin
Result := Copy(Eingabe, Von, Zu-(Von-1) );
end;
//Um ein Glied eines Pfades zu bekommen
function GetPart(S: String; const Index: Integer): String;
var
Len, P, C: Integer;
begin
S := IncludeTrailingBackslash(S);
Len := Length(S);
P := 0;
C := 0;
repeat
if C = Index then begin
Result := CopyFT(S, P+1, PosEx('\', S, P+1)-1);
Break;
end;
P := PosEx('\', S, P+1);
Inc(C);
until P = Len;
end;
//Um zu bestimmen wieviele Glieder ein Pfad besitzt
function PartsCount(S: String): Integer;
var
Len, P: Integer;
begin
S := IncludeTrailingBackslash(S);
Len := Length(S);
P := 0;
Result := 0;
repeat
P := PosEx('\', S, P+1);
Inc(Result);
until P = Len;
end;
//Zum Laden einer Stringlist in ein TTreeView
procedure StringListToTree(var L: TStrings; var Tree: TTreeView);
var
S, Part: String;
X, N, I: Integer;
// X .. Zeile
// I .. Parts
// N .. Nodesuche
Node: TTreeNode;
Found: Boolean;
begin
Tree.Items.Clear;
Tree.Items.Add(NIL, 'START');
for X := 0 to L.Count-1 do begin
Node := Tree.Items[0];
S := L[X];
for I := 0 to PartsCount(S)-1 do begin
Part := GetPart(S, I);
Found := False;
for N := 0 to Node.Count-1 do begin
if Node[N].Text = Part then begin
Node := Node[N];
Found := True;
Break;
end;
end;
if not Found then begin
Node := Tree.Items.AddChild(Node, Part);
end;
end;
end;
end;
|
|
Zitat
|