var Node: TTreeNode; begin Node := TreeView1.Selected.GetNext; while (Node <> nil) and (Node.Level > TreeView1.Selected.Level) do begin if not Node.HasChildren then ShowMessage(Node.Text + '是一片叶子'); Node := Node.GetNext; end; end;————————————————————————————————— 宠辱不惊,看庭前花开花落,去留无意;毁誉由人,望天上云卷云舒,聚散任风。 —————————————————————————————————
楼上的正确, 关键点为 Level 的判断及 GetNext 方法取下一结点项.
procedure GetAllNodeLeafs( tn1 : TTreeNode ); var i: integer; begin if not tn1.HasChildren then begin //你自己的处理代码; end else for i:=0 to tn1.Count-1 do GetAllNodeLeafs(tn1.Item[i]); end;
Node: TTreeNode;
begin
Node := TreeView1.Selected.GetNext;
while (Node <> nil) and (Node.Level > TreeView1.Selected.Level) do
begin
if not Node.HasChildren then ShowMessage(Node.Text + '是一片叶子');
Node := Node.GetNext;
end;
end;—————————————————————————————————
宠辱不惊,看庭前花开花落,去留无意;毁誉由人,望天上云卷云舒,聚散任风。
—————————————————————————————————
var
i: integer;
begin
if not tn1.HasChildren then begin
//你自己的处理代码;
end
else for i:=0 to tn1.Count-1 do
GetAllNodeLeafs(tn1.Item[i]);
end;
除非子节点是你节点的值加某一个部分内容。
如:父节点:10
子节点:1001
孙节点:100101
。。
建议:
如果你现在的设计,建议一级一级的填啊。
先填完第一级,再填第一级的所有子节点的节点。
或者是展开时动态检测。