CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
可用分押宝游戏火热进行中... 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  Delphi >  网络通信/分布式开发

请问如何遍历TreeView中的所有顶层节点??

楼主xiangding(一蓑烟雨任平生!)2003-08-01 17:58:14 在 Delphi / 网络通信/分布式开发 提问

我的TreeView中的好几层,   我现在只要得到第一层的所有名字?怎么做,越简单越好。 问题点数:0、回复次数:2Top

1 楼zhangxuyu1118(zxy)回复于 2003-08-04 12:20:37 得分 0

这是我以前用来创建时间(年月日)的模板树:  
  //模板树的创建  
  procedure   TfrmZxyOperationView1.tvLeftCreate;  
  var  
      nodeRoot,nodeLevel1,nodeLevel2,nodeLevel3:Ttreenode;  
      strSQL,strWhere:string;  
      i:integer;  
  begin  
      tvLeft.Items.Clear;  
      //level   0  
      nodeRoot:=tvLeft.Items.Add(nil,TxtNodeRoot);  
      nodeRoot.ImageIndex:=intTvImgIndex;  
      nodeRoot.SelectedIndex:=intTvSelectedIndex;  
   
      strWhere:='1=1';  
      strSQL:=format(strSqlFormat,[fKeyField,'2',fMasterTb,strWhere]);//'select   DISTINCT   left(fKeyField,4)   from   td_InBill'  
      //msgbox(strSQL);  
      //level   1  
      with   frmPcManagerData.Qry1   do  
      begin  
          close;  
          sql.Clear;  
          sql.Add(strSQL);  
          open;  
          while   not   eof   do   //w1  
          begin  
              new(fNodePointer1);  
              fNodePointer1.NodeID:=fields[0].AsString;//03  
              fNodePointer1.NodeName:='20'+fNodePointer1.NodeID+'年';  
              nodeLevel1:=tvLeft.Items.AddChildObject(nodeRoot,fNodePointer1.NodeName,fNodePointer1);  
              nodeLevel1.ImageIndex:=intTvImgIndex;  
              nodeLevel1.SelectedIndex:=intTvSelectedIndex;  
              //level   2  
              with   frmPcManagerData.Qry2   do  
              begin  
                  strWhere:=format(strWhereFormat,[fKeyField,'2',fNodePointer1.NodeID]);  
                  strSQL:=format(strSqlFormat,[fKeyField,'4',fMasterTb,strWhere]);  
                //   msgbox(strSQL);  
                  close;  
                  sql.Clear;  
                  sql.Add(strSQL);  
                  //msgbox(sql.Text);  
                  open;  
                  while   not   eof   do//w2  
                  begin  
                      new(fNodePointer2);  
                      fNodePointer2.NodeID:=fields[0].AsString;//0306  
                      fNodePointer2.NodeName:=copy(fNodePointer2.NodeID,3,2)+'月';  
                      nodeLevel2:=tvLeft.Items.AddChildObject(nodeLevel1,fNodePointer2.NodeName,fNodePointer2);  
                      nodeLevel2.ImageIndex:=intTvImgIndex;  
                      nodeLevel2.SelectedIndex:=intTvSelectedIndex;  
                      //level   3  
                      with   frmPcManagerData.Qry3   do  
                      begin  
                          strWhere:=format(strWhereFormat,[fKeyField,'4',fNodePointer2.NodeID]);  
                          strSQL:=format(strSqlFormat,[fKeyField,'6',fMasterTb,strWhere]);  
                          //msgbox(strSQL);  
                          close;  
                          sql.Clear;  
                          sql.Add(strsql);  
                          //msgbox(sql.Text);  
                          open;  
                          while   not   eof   do//w2  
                          begin  
                              new(fNodePointer3);  
                              fNodePointer3.NodeID:=fields[0].AsString;//030618  
                              fNodePointer3.NodeName:=copy(fNodePointer3.NodeID,5,2)+'日';  
                              nodeLevel3:=tvLeft.Items.AddChildObject(nodeLevel2,fNodePointer3.NodeName,fNodePointer3);  
                              nodeLevel3.ImageIndex:=intTvImgIndex;  
                              nodeLevel3.SelectedIndex:=intTvSelectedIndex;  
                              next//w3  
                          end;  
                          close;  
                      end;  
                      next;//w2  
                  end;  
                  close;  
              end;  
              next;//w1  
          end;  
          close;  
      end;  
      with   tvLeft   do  
      begin  
      FullExpand;  
      if   Items.Count<3   then   exit;  
      for   i:=0   to   Items[0].Item[0].Count-1   do  
          Items[0].Item[0].Item[i].Collapse(false);  
      end;  
  end;Top

2 楼zhangxuyu1118(zxy)回复于 2003-08-04 12:24:37 得分 0

这是我以前的全树搜索(根据结点ID找到树中对应结点),  
  {这里写全树搜索模板}  
  procedure   TfrmZxyOperationView1.locateNode(aNodeID:string);  
  var  
      TempNode:TTreeNode;  
  begin  
      tvLeft.SetFocus;  
      TempNode:=tvLeft.Items.GetFirstNode;  
      while   (TempNode   <>   nil)     do  
      begin  
          TempNode:=TempNode.getNext;  
          if   TempNode.Level<>3   then   continue;   //不等于第三层则继续  
          if   PMyNode(TempNode.Data)^.NodeID=aNodeID   then   break;//找到了则停止  
      end;  
      TempNode.Parent.Expand(true);  
      TempNode.Selected:=true;  
  end;Top

相关问题

  • 如何遍历TreeView中本层节点?
  • 如何遍历treeview的所有节点?
  • 在TreeView中遍历选中的节点
  • 如何遍历treeview中的某一节点的子节点
  • 用脚本递归遍历TreeView节点,为什么只能遍历部分节点,代码如下
  • 如何遍历Treeview的所有子节点?
  • 怎样遍历treeview,并在叶子节点设置其NavigateUrl?
  • 关于TreeView新增节点与遍历,请各位帮帮忙,
  • 关于treeview遍历和依次添加子节点,三拜~~
  • 请教关于treeview的节点遍历问题

关键词

  • fnodepointer
  • noderoot
  • nodelevel
  • tvleft
  • nodeid
  • tempnode
  • strsql
  • strwhere
  • begin
  • items

得分解答快速导航

  • 帖主:xiangding

相关链接

  • Delphi类图书
  • Delphi类源码下载
  • Delphi控件下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo