该主题中的代码示例来源于示例应用程序 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!TITLEmItem.SmallIcon = "smlBook"mItem.Icon = "book"mItem.Key = rsTitles!ISBN'用函数得到书的作者并设置' SubItems(1)属性。mItem.SubItems(1) = GetAuthor(rsTitles!ISBN)If Not IsNull(rsTitles![Year Published]) ThenmItem.SubItems(2) = _rsTitles![Year Published]End IfmItem.SubItems(3) = rsTitles!ISBNrsTitles.MoveNextLoopEnd Sub