Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi TreeView - Pfad zusammensetzen ? (https://www.delphipraxis.net/79765-treeview-pfad-zusammensetzen.html)

Blackheart 27. Okt 2006 19:50


TreeView - Pfad zusammensetzen ?
 
Hallo Leute
Habe vollgendes Problem, Ich lese ein Verzeichnis in ein Treeview ein.
Jetzt möchte Ich durch je nachdem was Ich anklick den Pfad zusammensetzen.
Als bsp.

Code:
Ordner1
Ordner2 -
          Unterordner1
          Unterordner2 -
                         Unterordner21 -
                                         Datei1.txt
                                         Datei2.txt -
Der Pfad sollte dann so aussehen.
Ordner2\Unterordner2\Unterordner21\Datei2.txt

Ich hab ehrlich gesagt noch keinen Plan wie man das am besten angeht.
Den Entsprechenden Ordner krieg Ich mit Expanding und node.text,
die Datei mit TreeView.Selected.Text aber irgendwie müsste Ich ja alle Schritte
zwischenspeichern und da fällt Mir jetzt so recht nichts dazu ein.
Vieleicht könnt Ihr Mir etwas auf die Sprünge helfen.
Blackheart

Blackheart 27. Okt 2006 20:20

Re: TreeView - Pfad zusammensetzen ?
 
Habe jetzt eine Idee - Das Treeview in eine Stringlist laden und die strings anhand TreeView.Selected.AbsoluteIndex aus der Stringlist hohlen.
Falls noch ein anderer ne Idee hat dann bitte posten.
Ich probiers erstmal.
Blackheart

marabu 27. Okt 2006 20:27

Re: TreeView - Pfad zusammensetzen ?
 
Hallo,

vielleicht hilft dir das hier:

Delphi-Quellcode:
function NodePath(node: TTreeNode): String;
begin
  Result := node.Text;
  if Assigned(node.Parent) then
    Result := NodePath(node.Parent) + ' \ ' + Result;
end;
Grüße vom marabu

Blackheart 27. Okt 2006 21:19

Re: TreeView - Pfad zusammensetzen ?
 
Danke marabu genau das wars, wär Ich allein nicht drauf gekommen
dann spar Ich Mir das mit der Stringlist.
Arbeite zum ersten mal mit der TreeView und man findet da in der Hilfe nicht gerade viel oder eben nicht das was man gerade braucht.


Edit:

Naja etwas zu früh gefreut, das klappt ja soweit nur wenn Ich in der Liste wieder zurück gehe kommt ja ein ganz anderer Pfad herraus als Ich beabsichtigt hab.
Naja mal schaun vieleicht fällt Mir oder Euch ja nochwas ein.
Blackheart

SirThornberry 27. Okt 2006 23:35

Re: TreeView - Pfad zusammensetzen ?
 
anstelle der Recursion geht hier auch einfach eine While-Schleife die solange läuft bis das Node = nil ist und ansonsten vom Node den Parent holt und den Pfad ergänzt.
Delphi-Quellcode:
Pfad := '';
while Assigned(Node) do
begin
  Pfad := Node.Text + '\' + Pfad;
  Node := Node.Parent;
end;

Lannes 28. Okt 2006 16:15

Re: TreeView - Pfad zusammensetzen ?
 
Hallo,
Zitat:

Zitat von Blackheart
...Edit:

Naja etwas zu früh gefreut, das klappt ja soweit nur wenn Ich in der Liste wieder zurück gehe kommt ja ein ganz anderer Pfad herraus als Ich beabsichtigt hab.
Naja mal schaun vieleicht fällt Mir oder Euch ja nochwas ein.
Blackheart

kannst Du das mal genauer erklären, was heist:
"wenn Ich in der Liste wieder zurück gehe kommt ja ein ganz anderer Pfad herraus als Ich beabsichtigt hab"
?

Blackheart 29. Okt 2006 08:38

Re: TreeView - Pfad zusammensetzen ?
 
Hatt sich erledigt, danke an alle die Mir geholfen haben.
Hier die Lösung für alle die dieses Problem auch mal haben.
Delphi-Quellcode:
Function GetTreeNodePath (aNode: TTreeNode; aDiv: String): String;
Begin
  If Assigned (aNode) Then
    If Assigned (aNode.Parent) Then
      GetTreeNodePath := GetTreeNodePath (aNode.Parent, aDiv) + aDiv + aNode.Text
    Else
      GetTreeNodePath := aNode.Text
  Else
    GetTreeNodePath := '';
End;

procedure TForm1.TreeChange(Sender: TObject; Node: TTreeNode);
begin
  Label3.Caption := GetTreeNodePath (Node, '\');
end;
Blackheart


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:31 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz