SortKey、SortOrder、Sorted 属性、ColumnClick 事件示例
本示例将三个 ColumnHeader 对象添加到 ListView 控件中,并将 Biblio.mdb 数据库的 Publishers 记录植入控件。一个由两个 OptionButton 控件组成的数组提供将记录排序的两个选项。单击 ColumnHeader 将根据由 OptionButtons 决定的 SortOrder 属性将 ListView 控件排序。要试用此例,请将一个 ListView 和一个由 OptionButton 控件组成的控件数组放置在窗体上,并将代码粘贴到窗体的声明部分。运行示例并单击 ColumnHeaders 进行排序,单击 OptionButton 来切换 SortOrder 属性。注意 必须使用“工具”菜单的“引用”命令添加 Microsoft DAO 3.5 对象库的引用,否则示例无法运行。Private Sub Option1_Click(Index as Integer)
   '这些 OptionButtons 提供两种选择:升序(索引 0),
   '和降序(索引 1)。请单击其一
   '为 ListView 控件设置 SortOrder。
   ListView1.SortOrder = Index
   ListView1.Sorted = True '将列表排序。
End SubPrivate Sub Form_Load()
   '为 ColumnHeader 对象创建对象变量。
   Dim clmX As ColumnHeader
   '添加 ColumnHeaders。列宽度等于控件宽度
   '除以 ColumnHeader 对象的数目。
   Set clmX = ListView1.ColumnHeaders. _
   Add(, , "Company", ListView1.Width / 3)
   Set clmX = ListView1.ColumnHeaders. _
   Add(, , "Address", ListView1.Width / 3)
   Set clmX = ListView1.ColumnHeaders. _
   Add(, , "Phone", ListView1.Width / 3)   ListView1.BorderStyle = ccFixedSingle '设置 BorderStyle 属性。
   ListView1.View = lvwReport '设置 View 属性为报表型。   '用 SortOrder 选项标注 OptionButton 控件。
      Option1(0).Caption = "Ascending (A-Z)"
      Option1(1).Caption = "Descending (Z-A)"
      ListView1.SortOrder = lvwAscending ' Sort ascending.   '为数据访问对象创建对象变量。
   Dim myDb As Database, myRs As Recordset
   '设置数据库为 BIBLIO.MDB 数据库。
   Set myDb = DBEngine.Workspaces(0).OpenDatabase("BIBLIO.MDB")
   '设置 recordset 为 Publishers 表。
   Set myRs = myDb.OpenRecordset("Publishers", dbOpenDynaset)
      
   '为添加 ListItem 对象创建变量。
   Dim itmX As ListItem   '若当前记录不是最后一条记录,则添加 ListItem 对象。
   'ListItem 对象的文本使用 Name 字段。
   'ListItem 对象的 subitem(1) 使用 Address 字段。
   'ListItem 对象的 subitem(2) 使用 Phone 字段。   While Not myRs.EOF
      Set itmX = ListView1.ListItems.Add(, , CStr(myRs!Name))      '若 Address 字段不为空,则设置 subitem 1 为此字段。
      If Not IsNull(myRs!Address) Then
         itmX.SubItems(1) = CStr(myRs!Address)  'Address 字段。
      End If      '若 Phone 字段不为空,则设置 subitem 2 为此字段。
      If Not IsNull(myRs!Telephone) Then
         itmX.SubItems(2) = myRs!Telephone  'Phone 字段。
      End If      myRs.MoveNext   '移动到下一条记录。
   Wend
End SubPrivate Sub ListView1_ColumnClick(ByVal ColumnHeader As ColumnHeader)
   '单击 ColumnHeader 对象时,将根据
   '那一列的子项目把 ListView 控件排序。
   '设置 SortKey 为 ColumnHeader 的索引值减 1
   ListView1.SortKey = ColumnHeader.Index - 1
   '设置 Sorted 为 True 以将列表排序。
   ListView1.Sorted = True
End Sub