关于超想
本站导航
邮件列表
  首页 | 本站产品 | Delphi资料 | 免费资源 | 程序人生 | 软件工程 | 网站设计 | 推荐网站
你所在的位置 -> 主页 -> 超想软件 -> 编程资料 -> delphi -> 开发技巧 -> 构件使用 ->详细
相关内容  
 
 
在Delphi程序中应用IE浏览器控件
 
【新品推荐】

  详细内容
 

求treeview中一个子树的深度和结点数量的方法和代码
作者: 评价: 上站日期: 2002-04-03
内容说明:
来源:

方法如下:
procedure TForm1.Button2Click(Sender: TObject);
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;

 
你所在的位置 -> 主页 -> 超想软件 -> 编程资料 -> delphi -> 开发技巧 -> 构件使用 ->详细
  首页 | 本站产品 | Delphi资料 | 免费资源 | 程序人生 | 软件工程 | 网站设计 | 推荐网站
声明:本站内容除注明原创以外均从网上摘抄,如有侵权请指明。
  如果您对我们的网站有什么意见或者建议,请与我们联系
powered by 建站易上手- V2.0