So und hier die praktische Umsetzung:
Delphi-Quellcode:
////////////////////////////////////////////////////////////////////////////////
// Pfad eines Treeview-Knotens holen, ausgehen von einem selektierten Knoten
function GetPath(Node: TTreeNode): String;
var
s1, s2: String;
begin
// so lange es Knoten gibt
while Node <> nil do
begin
// Text holen
s2 := Node.Text;
// String zusammenbauen
s1 := s2+ '\'+ s1;
// einen Knoten nach oben gehen
Node := Node.Parent;
end;
// Zurückgeben
result := s1;
end;
procedure TForm1.TreeView1Click(Sender: TObject);
var
AnItem: TTreeNode;
ScreenPt, ClientPt: TPoint;
HT: THitTests;
begin
// Wo wurde geklickt
GetCursorPos(ScreenPt);
// umrechen von Screen-Koordinaten nach Client-Koordinaten
ClientPt := ScreenToClient(ScreenPt);
// Sicherstellen, dass was selektiert wurde
if TreeView1.Selected = nil then Exit;
// Hittest machen
HT := TreeView1.GetHitTestInfoAt(ClientPt.X, ClientPt.Y);
// Knoten holen
AnItem := TreeView1.GetNodeAt(ClientPt.X, ClientPt.Y);
// Hittest prüfen
if (HT - [htOnItem, htOnIcon, htNowhere, htOnIndent] <> HT) then
begin
// Pfad holen
Caption := GetPath(AnItem);
end;
end;
Was war daran jetzt so schwer? 10 Minuten Arbeit und selbst habe ich es auch noch nie gemacht.