TREEVIEW樹 - 產品信息
- 可樂
-百事可樂
-可口可樂
- 餅干
- 香煙如果我想獲取產品信息下的子節點個數,改怎么獲取?答案: 可樂 餅干 香煙 (3個字節點)然后我想獲取可樂欄目下的字節點,又該怎么獲取?答案: 百事可樂 可口可樂 ("可樂" 下的 2個字節點)
- 可樂
-百事可樂
-可口可樂
- 餅干
- 香煙如果我想獲取產品信息下的子節點個數,改怎么獲取?答案: 可樂 餅干 香煙 (3個字節點)然后我想獲取可樂欄目下的字節點,又該怎么獲取?答案: 百事可樂 可口可樂 ("可樂" 下的 2個字節點)
begin
result:=0;
node:=node.getFirstChild;
while node<>nil do
begin
result:=result+1;
node:=node.GetNext;
end;
end;procedure TForm1.TreeView1Click(Sender: TObject);
begin
label1.Caption:='节点-'+TreeView1.Selected.Text+'有:'+inttostr(GetChildNodeCount(TreeView1.Selected))+'个子结点';
end;
如果我想在memo中自動列出各個節點的子節點個數,代碼應該改成什么?也就是不適用TreeView1.Selected用法如:memo.text{產品信息有3個節點百事可樂有2個節點.}
var
i:integer;
d:integer;
begin
for i:=0 to TreeView1.Items.Count-1 do
begin
d:=GetChildNodeCount(TreeView1.Items[i]);
if d>0 then
memo1.Lines.Add(TreeView1.Items[i].Text+'有'+inttostr(d)+'个结点');
end;
end;function TForm1.GetChildNodeCount(node: TTreenode): integer;
begin
result:=0;
node:=node.getFirstChild;
while node<>nil do
begin
result:=result+1;
node:=node.GetNext;
end;
end
procedure TForm3.Button1Click(Sender: TObject);
var
I: Integer;
begin
for I := 0 to TreeView1.Items.Count - 1 do
begin
if TreeView1.Items[I].HasChildren then
Memo1.Lines.Add(TreeView1.Items[I].Text+'有'+IntToStr(TreeView1.Items[I].Count)+'个节点');
end;
end
var
i:integer;
s: string;
ttn: ttreenode;
begin
i := 0;
s := '';
ttn := treeview1.Selected.getFirstChild;
if ttn<>nil then
begin
s := ttn.Text;
inc(i);
end;
while ttn<>nil do
begin
ttn := ttn.GetNextChild(ttn);
if ttn<>nil then
begin
s := s+' '+ttn.Text;
inc(i);
end;
end;
showmessage(treeview1.Selected.Text+':有'+inttostr(i)+'节点('+' '+s+')');
end;