To 票票: SelNode.Count:是表示其子层的节点数,但子节点的子节点等等,都没包括在内。呵呵。。
遍历一遍不就可以了,靠。 var Base :TTreeNode ; i, k :integer; begin Base :=TreeView.Selected; for i := 0 to TreeView.Items.Count - 1 do if TreeView.Items.Parent = Base then Inc(k); ShowMessage(StrToInt(k)); end;
function GetNodeCount(Node: TTreeNode):Integer; var Node1,Node2: TTreeNode; iNode,ii: Integer; begin iNode := 0; Result := 0; for ii := 0 to Node.Count -1 do begin Node1 := Node.Item[ii]; Inc(iNode); if Node1.Count > 0 then iNode := iNode + GetNodeCount(Node1); Node1 := Node1.getNextSibling; if Node1 = nil then begin Result := iNode; Exit; end; end; end;
function GetNodeCount(aNode: TTreeNode) : Integer; begin Result:= aNode.Count; if aNode.Count = 0 then Exit; aNode:= aNode.getFirstChild; while (aNode <> nil) do begin Result:= Result + GetNodeCount(aNode); aNode := aNode.getNextSibling; end; end;
SelNode.Count:是表示其子层的节点数,但子节点的子节点等等,都没包括在内。呵呵。。
var
Base :TTreeNode ;
i, k :integer;
begin
Base :=TreeView.Selected;
for i := 0 to TreeView.Items.Count - 1 do
if TreeView.Items.Parent = Base then
Inc(k);
ShowMessage(StrToInt(k));
end;
var Node1,Node2: TTreeNode;
iNode,ii: Integer;
begin
iNode := 0;
Result := 0;
for ii := 0 to Node.Count -1 do
begin
Node1 := Node.Item[ii];
Inc(iNode);
if Node1.Count > 0 then
iNode := iNode + GetNodeCount(Node1);
Node1 := Node1.getNextSibling;
if Node1 = nil then
begin
Result := iNode;
Exit;
end;
end;
end;
begin
Result:= aNode.Count;
if aNode.Count = 0 then Exit;
aNode:= aNode.getFirstChild;
while (aNode <> nil) do
begin
Result:= Result + GetNodeCount(aNode);
aNode := aNode.getNextSibling;
end;
end;