设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

12下一页
返回列表 发新帖
查看: 5164|回复: 11
打印 上一主题 下一主题

[ActiveX] 多父节点TreeView如何实现

[复制链接]
跳转到指定楼层
1#
发表于 2016-2-19 22:36:12 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
论坛里TreeView的实例一搜一大把,最近有个项目要用到多父节点关系树。google了整个网络,竟然没有。坛子里有没有高人搞过,忘指点一二,不胜感激!

比如

父亲         母亲
   \            /
     \        /
       \    /
      小明
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 分享淘帖 订阅订阅
2#
发表于 2016-2-20 09:15:27 | 只看该作者
这玩意儿好像应该属于图吧?
关于这么高级的数据结构,VB/VBA不好实现。
事实上,除了自带的数组、字典和集合之外,其它数据结构在VBA/VB里实现起来都不容易,往往需要写类模块。
3#
发表于 2016-2-20 09:25:25 | 只看该作者
多些说明
treeview可能难以实现你的要求
4#
 楼主| 发表于 2016-2-20 09:36:20 | 只看该作者
貌似这样的结构不符合树的定义了,树只有一个根。而这样的定义会出现多个根,只能成为关系图吧。
5#
发表于 2016-2-20 10:50:30 | 只看该作者
本帖最后由 todaynew 于 2016-2-20 11:04 编辑
LeeTien 发表于 2016-2-20 09:36
貌似这样的结构不符合树的定义了,树只有一个根。而这样的定义会出现多个根,只能成为关系图吧。

这就看你会不会转化问题或者问题能否被转化了。
1、诸如父母与子女的问题,可以转换为父子关系,其要点是将父母关系看成另外的一对一关系或一对多关系。
2、诸如独生子女问题,可以转化为逆的tree结构。
参见:http://www.office-cn.net/forum.p ... F%CF%C2%C7%F3%CB%F7
http://www.office-cn.net/forum.p ... A%C1%AC%BE%C5%D7%E5
3、多父对多子,实际上可以转换为多个一父对多子或一子对多父,所以只需要一个组合框控件与tree控件结合使用就能满足普遍的需要。

所以对于此类问题,首先不是解决它,而是转换它,使之符合已知的处理方法和逻辑。

点评

谢谢斑竹亨亨教诲  发表于 2016-2-21 10:47
6#
发表于 2016-2-23 09:10:23 | 只看该作者
看来LZ没有研究深入啊,父子关系,同时这个关系也是反向,
好比,一个产品,用了N种物料,但一种物料被N种产品使用,看。物料也可以是父项了
好比我们建好的表结构,一列放父项数据,一列放子项数据,你如果操作一上,把子项数据排序一下,如果不通过字段字面意思和标题名称的话,你肯定是分不出来,谁是父项谁是子项的,所以在应用中,PDM或MRP计算时,时常也用到这类算法,
你为什么网上没有搜到呢。是因为这个不是个问题,说起来是三个关系,但实质上,多对多,是由若干个一对多关系组合而成的,
所以一般数据库都 是一对一,一对多为主,最多加一个“没关系”,呵。。
7#
 楼主| 发表于 2016-2-24 08:42:45 | 只看该作者
本帖最后由 LeeTien 于 2016-2-24 08:47 编辑

楼上的大师可否做个实例:就以以下关系
PS:关键是要做展示,如果只是做逻辑关系那太简单了,请围绕主题!

父亲         母亲
   \            /
     \        /
       \    /
      小明
      /  |  \
    /    |    \
  /      |      \
/        |        \
长子 次子  长女











8#
发表于 2016-3-8 13:35:27 | 只看该作者
本帖最后由 todaynew 于 2016-3-8 16:53 编辑
LeeTien 发表于 2016-2-24 08:42
楼上的大师可否做个实例:就以以下关系
PS:关键是要做展示,如果只是做逻辑关系那太简单了,请围绕主题! ...

这不是很简单嘛。
以小明为根节点,一个父辈tree加一个子辈tree。

            小明
           /      \
          /         \
       父辈         子辈
     /     \          /  |  \
   父亲    母亲 /   |    \
                     /    |      \
                    /     |        \
              长子    次子     长女

实现方法有两种:
第一种:两个treeview控件,第一个treeview控件按单父节点向下展开,第二个trueview在第一个treeview的节点单击事件中,将单击的节点做根,然后加载父辈和子辈节点。

第二种:用一个treeview控件,通过节点双击切换两种tree视图。
9#
 楼主| 发表于 2016-3-8 17:35:16 | 只看该作者
todaynew 发表于 2016-3-8 13:35
这不是很简单嘛。
以小明为根节点,一个父辈tree加一个子辈tree。

逻辑上没有问题,实际上做出来就很怪了,父辈变成了小明子节点,晚辈也是小明的子节点。
10#
 楼主| 发表于 2016-3-9 10:36:54 | 只看该作者
昨天找到一个老外的实例,思路不错,只是源码太长,目前正在改造。有兴趣的可以看看
http://www.office-cn.net/forum.php?mod=viewthread&tid=121478&page=1#pid741367
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|站长邮箱|小黑屋|手机版|Office中国/Access中国 ( 粤ICP备10043721号-1 )  

GMT+8, 2024-11-25 08:32 , Processed in 0.104221 second(s), 34 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表