2014-12-11 1 views
0

Добрый день ...Treeview Детского Delphi

У меня есть Treeview, которые обладают несколько детьми:

local 
----- Son 0 
----- Son 1 
---------- Recipe 1 
-------------------- Value1 
----------------------------- Olá1 
----------------------------- Olá2 
------------------------------------ Select Here 
-------------------- Value2 
---------- Revenue 2 
----- Son 2 
----- Son 3 

Скажет, я нажимаю сын (SELECT ЗДЕСЬ), как я могу получить первый ребенок корневого узла (Son 1) ... у меня есть некоторый код, который берет корень, но я хотел бы, чтобы забрать ребенка из этого корня, которая была нажата:

p: = Form4.TreeView1.Selected.Parent; 
           while Assigned (p.Parent) of the Begin 
               p: = p.Parent; 
           end; 

ответ

4

Просто использовать дополнительную переменную для отслеживания «предыдущего узла», когда вы достигнете корня то предыдущий один вам нужен? Ie

Prev := nil; 
p := Form4.TreeView1.Selected; 
if(p <> nil)then begin 
    while Assigned(p.Parent) do begin 
     Prev := p; 
     p := p.Parent; 
    end; 
end; 
// Prev, if assigned, should be the node you need 
+0

Этот код сработает, если 'Selected' или' Selected.Parent' равно нулю. –

+0

Спасибо, должно быть правильно сейчас – ain