数据库如下:
  nodeid: integer 节点id
  nodename:string 节点名
  pnodeid:integer 父节点数据如下:
  1   全公司  0
  2   总务课  1
  3   总务系  2
  4   制造课  1
  5   制造系  4程序中的treeview显示如下:
  --全公司
  |---总务课
  |     |---总务系
  |
  |---制造课
  |     |---制造系到这步我没有问题,都可以做到,问题是
当用户选择treeview中的一个项目时,我
如何知道数据库中他所对应的nodeid呢?
就像文件管理器一样,由于处于不同的父
节点,因此文件名有可能是相同的,我不能
按照名称在表中进行查找的?
请各位给我个思路,有代码更好!

解决方案 »

  1.   

    NewNode.Data := Query1.GetBook;
    Query1.GotoBook(TheNode.Data);
    将treeview和数据库关联
      

  2.   

    treeview的每个节点(node)都有data属性,data是一个指针,可一直向任何数据,上面的例子就是指向数据集的标签,然后通过标签访问到对应的记录
      

  3.   

    小弟刚开始学delphi,还不是很懂,
    我是从其他地方学到的方法把数据库
    中的记录做成treeview的形式,做成后
    treeview和query1还有联系吗?应该
    没有了吧,上面的例子中如果
     --全公司
      |---总务课
      |     |---总务系
      |     |___事务处  // nodeid: 6
      |
      |---制造课
      |     |---制造系
      |     |___事务处  // nodeid: 7当用户选择一个“事务处”后我希望能
    得到相应的nodeid6或7,到底该如何做呢?
    分不够可以加!
      

  4.   

    写过这个代码,一个很简单的办法就是读取选择的节点的名称,这样可以完成数据库的查找,当然这样的话,速度相对比较慢,方法不是很好!还有你可以通过节点的Id来控制这个过程,应该是比较可行的!你可以看看Treeview这个控件的属性,里面有这方面的知识!!
      

  5.   

    根据查询的结果在Treeview添加接点