设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

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

[其它] ◆关于树

[复制链接]
跳转到指定楼层
1#
发表于 2003-11-13 06:29:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我查看了几个关于树的代码,
发现有一个"a"

不知在此代码中 a 代表什么?
________________

请讲一下好吗:

Option Compare Database
Option Explicit

Dim r As DAO.Recordset

Private Sub Form_Load()

End Sub

Private Sub Form_Open(Cancel As Integer)
  Dim rst As DAO.Recordset
  Dim nodCurrent As Node
  Dim nodRoot As Node
  Dim bk As String
  Dim t As TreeView
  
  DoCmd.Maximize
  
  
  Set rst = CurrentDb.OpenRecordset("tab类别", dbOpenDynaset, dbReadOnly)
  rst.FindFirst "[上级ID] Is Null"
  
  Set t = treTrView.Object
  Do Until rst.NoMatch
    Set nodCurrent = t.Nodes.Add(, , "a" & rst!id, rst![类别], 7, 8)
    bk = rst.Bookmark
    AddChildren nodCurrent, rst
    rst.Bookmark = bk
    rst.FindNext "[上级ID] Is Null"
  Loop
  
  ClearTemp
  lst问列表.Requery
End Sub

Sub AddChildren(nodBoss As Node, rst As DAO.Recordset)
  Dim nodCurrent As Node
  Dim bk As String

  rst.FindFirst "[上级ID] =" & Mid(nodBoss.key, 2)
  Do Until rst.NoMatch
    Set nodCurrent = treTrView.Nodes.Add(nodBoss, tvwChild, "a" & rst!id, rst![类别], 1, 8)
    bk = rst.Bookmark
    AddChildren nodCurrent, rst
    rst.Bookmark = bk
    rst.FindNext "[上级ID]=" & Mid(nodBoss.key, 2)
  Loop
End Sub

Private Sub Form_Resize()
  DoCmd.Maximize
End Sub


Private Sub Form_Timer()
  labDateTime.Caption = Now
  
End Sub

Private Sub labDateTime_Click()

End Sub

Private Sub lst问列表_Click()
  Dim s As String
  
  s = Nz(DLookup("例", "tabData", "[ID] =" & lst问列表.Value))
  
  
  If s <> "" Then
    lab例.Caption = CurrentProject.Path + "\DATA\" + _
                    treTrView.Nodes("a" & DLookup("类别ID", "tabData", "[ID]= " & lst问列表.Value)).FullPath _
                    + "\" + s
  Else
    lab例.Caption = ""
  End If
  
  lab例.HyperlinkAddress = lab例.Caption
  
  
End Sub

Private Sub treTrView_NodeClick(ByVal Node As Object)

  ClearTemp
  
  Set r = CurrentDb.OpenRecordset("tabTemp")
  Add Node
  r.Close

  lst问列表.Requery
End Sub

Private Sub ClearTemp()
  DoCmd.SetWarnings False
  DoCmd.RunSQL "DELETE tabTemp.* FROM tabTemp;"

End Sub

Private Sub Add(n As Node)
   
  r.AddNew
  r![IDTemp] = Val(Mid(n.key, 2))
  r.Update
  
  If n.Children > 0 Then Add n.Child
  If Not (n.Next Is Nothing) And n.key <> treTrView.SelectedItem.key Then Add n.Next
End Sub


[此贴子已经被作者于2003-11-12 22:38:54编辑过]

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 分享淘帖 订阅订阅
2#
发表于 2003-11-13 16:38:00 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
3#
发表于 2003-11-13 16:59:00 | 只看该作者
嘻嘻,这个我也发现啦

不过后来我在 分层装载节点树的时候用到啦  (没办法,1万条记录的树实在是慢死慢死啦)
就是可以把a作为 是否双击装载 的标志位
初始装载 为a & key,双击之后,应该禁止它再双击,然后就设定为 b& key
不过取节点的key值就麻烦一点点
需要作一个错误处理,如果取不到a&key,那么就是b&key

这样对于节点 就多了一些可以自己定义的标志位啦,确认能否双击只是应用之一,还可以作其他很多冬冬用
4#
 楼主| 发表于 2003-11-13 18:22:00 | 只看该作者
谢谢,

试验了若干次……
5#
 楼主| 发表于 2003-11-14 03:05:00 | 只看该作者
这个东西很有用呀:

 Set mNode = AtxTreeView.Nodes.Add(, , strID, syRecSet("基础资料名称"), 7, 8)
' AtxTreeView.Nodes.Add(参数)逗号表示参数顺序
1.一个已存在节点的索引或键值。 如果未指定, 新节点放在顶级节点的末端
2.新节点放置的相对于第一个参数中指定的节点的位置,可以是以下值:
   1: 节点放在相对节点所在级的所有节点的末端。
   2: 节点放在相对节点的后面。
   3: 节点放在相对节点的前面。
   4: 节点成为相对节点的子节点。
3.用于指明节点的唯一串。 如果显示内容是从一个表的记录中载入的, 可使用记录的主关键字段值 (如果不  是字符型的,还需要转换为字符型)。 否则, 可使用一个转换为串的顺序号。
4.控件节点中显示的文本。
5.相关 ImageList 控件中的图象索引
6.当节点选定时,要显示的相关 ImageList 控件中的图象索引。
6#
 楼主| 发表于 2003-11-14 03:06:00 | 只看该作者
基本上能明白了,

AddChildren nodCurrent, rst

代码中的这句话如何解释呢?



[此贴子已经被作者于2003-11-13 19:07:58编辑过]

点击这里给我发消息

7#
发表于 2003-11-14 03:08:00 | 只看该作者
增加一个子节点。
8#
发表于 2003-11-14 17:28:00 | 只看该作者
当初我看这么多参数 真的也是头都大啦
后来逼得没办法只能照猫画虎

那个函数是用来递归执行增加子节点操作的
但是因为每执行一次,就要读写数据库一次,速度慢哦

不知道哪位仁兄有高见
9#
 楼主| 发表于 2003-11-14 18:51:00 | 只看该作者
总算看懂啦!

有没有减少读取过程的方法呢?

把两个树做在一块会怎么样呢?
一个控制根目录,一个控制子目录……

能不能实现部会读取呢?


[此贴子已经被作者于2003-11-14 10:52:38编辑过]

10#
 楼主| 发表于 2003-11-14 18:56:00 | 只看该作者
Set mNode = AtxTreeView.Nodes.Add(, , strID, syRecSet("基础资料名称"), 7, 8)
' AtxTreeView.Nodes.Add(参数)逗号表示参数顺序

5.相关 ImageList 控件中的图象索引
6.当节点选定时,要显示的相关 ImageList 控件中的图象索引。

5和6
一般用哪个数值……

这是不是说还需要加一个控件……

您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-15 10:22 , Processed in 0.116642 second(s), 34 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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