如何取得treeview某节点下的所有子孙节点
解决方案 »
- 各位老大fastreport 如何实现单页 预览
- fastreport 哪个版本支持中文最好 并且稳定 ?
- 请教高手,深度问题。暂时无人能解决。。。。。。。。。。。。。
- 怎么往记录中增加记录?
- 怎样限制mdi子窗口的大小
- Delphi报表预览
- 擴展名最後一位為 "_" 的文件如何解壓,如 abc.ex_ def.dl_ 快快快
- 用DELPHI连接EXCEL出ERROR "TABEL1:MISSING TABLENAME PROPERTY"
- 报表打印问题,急,高分100送上!
- 怎样解决两幅图片的比较问题,用像素点比较!
- 如何在DBGrid中显示两个表的数据?望高手帮帮我这个初学者!
- 关于自定义函数的应用
type
Nodesum=record
Node:TTreenode; //结点
Layer:Integer; //所在层
end;
var
a:array of Nodesum;
Node:TTreenode;
Depth,i,j:Integer;
begin
Depth:=0;
i:=0;
j:=0;
Listbox1.Items.Clear;
Setlength(a,Treeview1.Items.Count);
Node:=Treeview1.Selected; //使顶结点为您所选择的结点
a[i].Node:=Node;
a[i].Layer:=0;
while a[i].Node< > nil do
begin
Node:=a[i].Node.Getfirstchild;//取其第一个子结点
while Node < > nil do
begin
j:=j+1;
a[j].Node:=Node;
a[j].Layer:=a[i].Layer+1; //此结点所在的层数
Node:=Node.GetNextSibling;
end;//如此循环,以取出此层所有结点
i:=i+1;
end;
i:=0;
while a[i].node< > nil do
begin
if a[i].Layer> Depth then
Depth:=a[i].Layer;//求最大的层数,即子树深度
listbox1.Items.Add(a[i].Node.Text);
i:=i+1;
end;
If a[0].Node< > nil then
begin
listbox1.Items.Add('子树结点共有: '+inttostr(i-1));//不含最上层结点
listbox1.Items.Add('了树深度为: '+inttostr(Depth));
end
else
listbox1.Items.Add('您没选择任何结点');//如果没选择任何结点则显示此句 end;