该主题中的代码示例来源于示例应用程序 DataTree.vbp,该示例应用程序列在 Samples 目录中。
在说明“与 TreeView 控件一起使用 ListView 控件”中,ListView 控件和 TreeView 控件是协同工作的。在那个说明中用 TreeView 控件的 NodeClick 事件调用了两个过程。第一个用于创建 ColumnHeader 对象,第二个用于充填 ListView 控件。
该说明继续开发了第二个名为“GetTitles”的过程,它将从 Biblio.mdb 数据库中得到的书目充填到 ListView 控件中。
下面的示例使用了如下对象:
要创建充填 ListView 控件的过程,请按照以下步骤执行:
在 GetTitles 中:
每次调用 GetTitles 过程时,需要查询 Biblio.mdb 数据库以创建新的 ListItem 对象的集合。然而,要做的第一件事是用 Clear 方法清空旧的集合:
lvwDB.ListItems.Clear '
清除所有ListItems
。
调用 GetTitles 过程时,Node 属性的 Key 属性值被传递给该过程。由于 Key 属性包含了标识出版商的唯一编号(PubID 字段),该值可用于查找 Titles 表以获得与 PubID 值匹配的记录。
完成这一工作的最有效的方法是,创建一个查询,只包括与 Titles 表的 PubID 字段具有相同 PubID 值的记录。这个查询如下所示:
Set rsTitles = mDbBiblio.OpenRecordset _
("select * from Titles where PubID = " & PubID)
记录集创建之后,就可以ListItem 集合添加对象了。下面的代码遍历该记录集,为每条记录创建 ListItem 对象,用记录集中的数据设置 Text 和 SubItems 属性。完整的过程代码如下所示:
Private Sub GetTitles(PubID) '
清除旧的书目。lvwDB.ListItems.Clear
'
声明Recordset
类型的对象变量。Dim rsTitles As Recordset
'
对该记录,用仅查找具有相同PubID
的书目的查询'
创建一个记录集。'
对该记录集中的每条记录,在' ListView
控件中添加ListItem
对象,'
并用记录的Title
、ISBN
和Author
字段'
设置新对象的属性。Set rsTitles = mDbBiblio.OpenRecordset _
("select * from Titles where PubID = " & PubID)
Do Until rsTitles.EOF
'
添加ListItem
。Set mItem = lvwDB.ListItems.Add()
mItem.Text = rsTitles!TITLE
mItem.SmallIcon = "smlBook"
mItem.Icon = "book"
mItem.Key = rsTitles!ISBN
'
用函数得到书的作者并设置' SubItems(1)
属性。mItem.SubItems(1) = GetAuthor(rsTitles!ISBN)
If Not IsNull(rsTitles![Year Published]) Then
mItem.SubItems(2) = _
rsTitles![Year Published]
End If
mItem.SubItems(3) = rsTitles!ISBN
rsTitles.MoveNext
Loop
End Sub