我在看电子工业出版社的Visual Basic6编程宝典这本书里的6.2和6.3两节ImageList和TreeView控件时,发现书上给的程序代码不能用,运行原时候总出现“实时错误'35601':未发现元素”的错误,请问这是为什么?谢谢
    程序需要用到的控件:一个ImageList控件,一个TreeView控件,代码如下(下划线的代码是提示出错的地方):
所用数据库是VB安装目录下的NWIND.MDB数据库
该程序的目的是建立一个可以显示NWIND.MDB数据库里内容的TreeView控件
Option Explicit
Dim dbStore As Database
Dim rsCategories As Recordset
Dim rsProducts As RecordsetPrivate Sub Form_Resize()
On Error Resume Next
ctlTreeView.Height = Me.ScaleHeight - (ctlTreeView.Top * 2)
ctlTreeView.Width = Me.ScaleWidth - (ctlTreeView.Left * 2)
End Sub
Private Sub Form_Load()
Set dbStore = OpenDatabase("C:\Program Files\Microsoft Visual Studio\VB98\NWIND.MDB")
Set rsCategories = dbStore.OpenRecordset("SELECT * FROM Categories ORDER BY CategoryName", dbOpenSnapshot)
Set rsProducts = dbStore.OpenRecordset("SELECT * FROM Products ORDER BY ProductName", dbOpenSnapshot)
Do While Not rsCategories.EOF
ctlTreeView.Nodes.Add "Cat" & rsCategories("CategoryID"), rsCategories("CategoryName"), "Category", "Category"
rsCategories.MoveNext
Loop
'Do While Not rsProducts.EOF
'ctlTreeView.Nodes.Add "Cat" & rsProducts("CategoryID"), tvwChild, "Prod" & rsProducts("ProductID"), rsProducts("ProductName"), "Product", "Product"
'rsProducts.MoveNext
'Loop
End Sub

解决方案 »

  1.   


    Option Explicit
    Dim dbStore As Database
    Dim rsCategories
    Dim rsProducts
    Private Sub Form_Resize()
        On Error Resume Next
        ctlTreeView.Height = Me.ScaleHeight - (ctlTreeView.Top * 2)
        ctlTreeView.Width = Me.ScaleWidth - (ctlTreeView.Left * 2)
    End Sub
    Private Sub Form_Load()
        Set dbStore = OpenDatabase("C:\Program Files\Microsoft Visual Studio\VB98\NWIND.MDB") 'NWIND.MDB
        Set rsCategories = dbStore.OpenRecordset("SELECT * FROM Categories ORDER BY CategoryName", dbOpenSnapshot)
        Set rsProducts = dbStore.OpenRecordset("SELECT * FROM Products ORDER BY ProductName", dbOpenSnapshot)
        '初始化treeview
        ctlTreeView.HideSelection = True
        ctlTreeView.Indentation = 19 * Screen.TwipsPerPixelX '缩进距离
        ctlTreeView.LabelEdit = tvwManual
        ctlTreeView.LineStyle = tvwRootLines
        
        '---==以下设置节点==---
        Dim Node1 As Node, Node2 As Node, i As Integer
        
        Do While Not rsCategories.EOF
        
            Set Node1 = ctlTreeView.Nodes.Add(, , , "Cat" & rsCategories("CategoryID")) '添加父节点,注意图标的位置不能瞎写数据
            rsCategories.MoveNext
            Do While Not rsProducts.EOF
            Set Node2 = ctlTreeView.Nodes.Add(Node1.Index, tvwChild, , "Prod" & rsProducts("ProductID")) '添加子节点,注意图标的位置不能瞎写数据
               i = i + 1
               If i > 5 Then
                  i = 0
                  Exit Do
               End If
                rsProducts.MoveNext
            Loop
            Node1.Expanded = True '展开节点,False闭合节点
        Loop
        
    End Sub
      

  2.   

    ctlTreeView.Nodes.Add ,,"Cat" & rsCategories("CategoryID"), rsCategories("CategoryName"), "Category", "Category"
    另:检查你的TreeView是否和ImageList绑定好,ImageList里面是否有关键字为Category的图片