Einzelnen Beitrag anzeigen

marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#6

Re: eigene Ordnerstruktur in TreeView

  Alt 30. Jan 2008, 20:57
Das hatte ich nicht bedacht, aber jetzt:

Delphi-Quellcode:
function PathToNode(s: TStrings; tn: TTreeNodes; path: string): TTreeNode;
var
  dir, subDir: string;
  index: Integer;
begin
  subDir := ExtractFileName(path);
  dir := ExtractFileDir(path);
  if dir = 'then
  begin
    index := s.IndexOf(subDir);
    if index < 0
      then Result := nil
      else Result := TTreeNode(s.Objects[index]);
    if not Assigned(Result) then
      Result := tn.AddChild(nil, subDir);
  end else
  begin
    index := s.IndexOf(dir);
    if index < 0
      then Result := nil
      else Result := TTreeNode(s.Objects[index]);
    if Assigned(Result)
      then Result := tn.AddChild(Result, subDir)
      else Result := tn.AddChild(PathToNode(s, tn, dir), subDir);
  end;
end;

procedure PathesToNodes(s: TStrings; tn: TTreeNodes);
var
  i: Integer;
begin
  for i := 0 to Pred(s.Count) do
    s.Objects[i] := PathToNode(s, tn, s[i]);
end;

procedure TDemoForm.ButtonClick(Sender: TObject);
var
  i: Integer;
  sl: TStringList;
begin
  sl := TStringList.Create;
  sl.Assign(Memo.Lines);
  sl.Sort;
  for i := sl.Count - 2 downto 0 do
    if SameText(sl[i], sl[Succ(i)]) or (sl[i] = '')
      then sl.Delete(i)
      else sl[i] := ExcludeTrailingPathDelimiter(sl[i]);
  sl.Sorted := True;
  TreeView.Items.Clear;
  PathesToNodes(sl, TreeView.Items);
  sl.Free;
end;
Gute Nacht
  Mit Zitat antworten Zitat