Einzelnen Beitrag anzeigen

Benutzerbild von F.W.
F.W.

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

Re: TreeView:einträge selbst speichern

  Alt 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;
  Mit Zitat antworten Zitat