Foxtable(狐表)用户栏目专家坐堂 → [求助]目录树代码


  共有3667人关注过本帖树形打印复制链接

主题:[求助]目录树代码

帅哥哟,离线,有人找我吗?
cqlwsam
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:五尾狐 帖子:1022 积分:7598 威望:0 精华:0 注册:2010/4/12 12:23:00
[求助]目录树代码  发帖心情 Post By:2014/1/5 17:36:00 [只看该作者]

想实现如图的目录树,代码如何写?

图片点击可在新窗口打开查看此主题相关图片如下:360软件小助手截图20140105172747.jpg
图片点击可在新窗口打开查看


一级目录是收治科室,来自表“基本信息”
二级目录是患者姓名,也来自表“基本信息”
三级目录是各种资料,包括:地址信息、病史资料、体征资料、检验资料、检查资料、其他资料
四级目录是各种资料的细分,病史资料包括:家族史、手术治疗史等等,体征资料包括:系统检查、专科检查等;检验资料包括血液分析、尿液分析等等
五级目录是各种资料再细分,如:血液分析将从表“血液分析”按患者PatientsID筛选来的数据,如果有则目录树显示检查日期,如果无,则无五级目录,但双击后可以添加血液分析结果。

如何用代码搞定?

 回到顶部
帅哥哟,离线,有人找我吗?
lsy
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:5246 积分:33163 威望:0 精华:8 注册:2013/1/17 21:28:00
  发帖心情 Post By:2014/1/5 17:52:00 [只看该作者]

目录树的缺点,是层级多,不像表,一目了然。

你这目录树,共有五级,操作人员会不高兴的。


 回到顶部
帅哥哟,离线,有人找我吗?
cqlwsam
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:五尾狐 帖子:1022 积分:7598 威望:0 精华:0 注册:2010/4/12 12:23:00
  发帖心情 Post By:2014/1/5 19:38:00 [只看该作者]

因为目前医院使用的就这样!一级目录会通过授权,只显示自己所属的科室,这样就只有四级目录了。
[此贴子已经被作者于2014-1-5 19:40:25编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2014/1/5 20:19:00 [只看该作者]

 如果是特制的目录树,就只能用递归自己做了,建议你还是直接用列去生成,简单方便。


 回到顶部
帅哥哟,离线,有人找我吗?
cqlwsam
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:五尾狐 帖子:1022 积分:7598 威望:0 精华:0 注册:2010/4/12 12:23:00
  发帖心情 Post By:2014/1/5 21:10:00 [只看该作者]

使用如下代码,得到了三级目录。
Dim trv As WinForm.TreeView = e.Form.Controls("TreeView1")
trv.BuildTree("基本情况","收治科室|姓名")
trv.StopRedraw '停止绘制目录树
For Each nd As WinForm.TreeNode In trv.AllNodes '遍历所有节点
    If nd.level=1 Then
        nd.Text = nd.text & "(" & nd.DataRow("patientsID") & ")"
        nd.Nodes.Add("地址信息","地址信息","007.png")
        nd.nodes.add("基本信息")
        nd.nodes.add("地址信息")
        nd.nodes.add("病史资料","病史资料","001.png")
        nd.nodes.add("体检资料")
        nd.nodes.add("检验资料")
        nd.nodes.add("检查资料")
        nd.nodes.add("其它资料")
    End If
Next
trv.ResumeRedraw '恢复绘制目录树

在三级目录下再添加子目录就搞不懂了。指点一下。谢谢!

 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2014/1/5 21:47:00 [只看该作者]

 比如,代码可以这样写

Dim trv As WinForm.TreeView = e.Form.Controls("TreeView1")
trv.BuildTree("基本情况","收治科室|姓名")
trv.StopRedraw '停止绘制目录树
For Each nd As WinForm.TreeNode In trv.AllNodes '遍历所有节点
    If nd.level=1 Then
        nd.Text = nd.text & "(" & nd.DataRow("patientsID") & ")"
        Dim node As WinForm.TreeNode
        Dim cnode As WinForm.TreeNode
        Dim ccnode As WinForm.TreeNode
        node = nd.Nodes.Add("地址信息","地址信息","007.png")
        cnode = node.Nodes.Add("我是第四级")
        ccnode = cnode.Nodes.Add("我是第五级")
    End If
Next

 回到顶部
帅哥哟,离线,有人找我吗?
cqlwsam
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:五尾狐 帖子:1022 积分:7598 威望:0 精华:0 注册:2010/4/12 12:23:00
  发帖心情 Post By:2014/1/5 21:56:00 [只看该作者]

我看了一个例子:
Dim nd As WinForm.TreeNode
tr = Forms("窗口1").Controls("TreeView1")
nd = Tr.Nodes.Add("Root1","根节点一")
nd.Nodes.Add("Sub1","子节点一")
nd.Nodes.Add("Sub2","子节点二")
nd = Tr.Nodes.Add("Root2","根节点二")
nd.Nodes.Add("Sub3","子节点三")
nd.Nodes.Add("Sub4","子节点四")
外面在加一层循环,我试了一下,不行。

 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2014/1/5 22:05:00 [只看该作者]

 看6楼,不是是可以任意建立的么?

 回到顶部
帅哥哟,离线,有人找我吗?
cqlwsam
  9楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:五尾狐 帖子:1022 积分:7598 威望:0 精华:0 注册:2010/4/12 12:23:00
  发帖心情 Post By:2014/1/5 22:11:00 [只看该作者]

按您的方法可以任意建立。谢谢!

 回到顶部