Table1:id(NODE的编号),parent_id,content(内容)//目录表
table2:id(被授权的NODE的编号),user(用户)//权限表如果用户被授予访问编号为ID的结点,则此结点的所有子孙结点都可以访问,此结点到根结点的路径也要形成(唯一)。

解决方案 »

  1.   

    俺想这问题很简单,首先从table2中选出用户对应的一级节点显示,对每一个一级节点通过递规从table1选出儿子显示。一定记住用递规对每一个根节点,
      

  2.   

    Easy,你选中节点的时候判断用户权限不久OK了
      

  3.   

    生成node时判断,无权不生成
    sql中加条件
    table2.user=当前用户
      

  4.   

    很简单!1、生成树的方法,找到Table1中parent_id为空的为根节点(假设为id0x),依次再生成Table1中Parent_id为刚才id0x的子树(假设为id1x),再id2x...id3x...,依次完成。就可以生成树了。当然,对于某个user,可是连接table2做一个过滤就可以了。
    2、节点授权界面处理,当某个Node可以访问时,可以向上回索到根节点,也可以向下遍历所有的子节点或子树,那么问题解决。
    3、节点授权存储处理,在生成树的时候,将Node 的Pointer指针指向id,那么从根节点遍历树就可以实现存储了。Easy!
      

  5.   

    如果需要生成树的方便,那么可以在设计表的时候在Table1中加入一个字段(冗余),如树的层次(假设为nLevel),那么生成树的时候,可以先生成nLevel=0的为根节点,再生成nLevel=1,依次下去,非常的简单
      

  6.   

    其实你自己定义一个record型或者直接继承自TTreeNode都可以
    type
      PNodeInfo=^TNodeInfo;
      TNodeInfo=packed record
           A: integer;
           B: integer;
      end;
    newnode: PNodeInfo;然后动态加载树节点,TreeView1.Items.AddObject(aNode,nodecap,newnode);
    然后在OnChange或者OnClick里面
       if PNodeInfo(Treeview1.Selected.Data)^.A >0 then
    ..............
      

  7.   

    动态加载..把用户能看到的NODE记到一个表中嘛..每个用户一个记录..
    这个在生成TREE的时候就可以加了嘛..
      

  8.   

    hansion3406(阿木㊣拖鞋男) 的方法很好,我们的权限控制都是这样的。每个用户都有自己的菜单样式(树型),在系统维护时(注册用户),逐一给用户分配菜单选项,存于表中。用户登录时,按表中相应用户存储的菜单项逐一显示出来,这是简单的权限管理方法。