Данный пример показывает как можно использовать элемент List View в Microsoft Access. Не забудьте подключить в новых файлах C:\Windows\System32\mscomctl.ocx
Public myNewList As MicrosoftList
' Управление Microsoft ListView c демонстрацией событий
'
Private Sub Form_Load()
If myNewList Is Nothing Then
' СоздУслуги, упаковка,транспорт, наценкаание объекта
Set myNewList = New MicrosoftList
Set myNewList.Tree = Me.myList.Object
' Загружаем узлы дерева из запроса
myNewList.Load "sqlListView"
End If
End Sub
' ----------- Объявляем класс List из Mscomctl.ocx --------
Public WithEvents Tree As MSComctlLib.ListView
' Объявляем событие для сообщений
'==============================================================
' События при создании/уничтожении класса
Private Sub Class_Initialize()
' Инициализация
End Sub
Private Sub Class_Terminate()
' Сохраняем данные
End Sub
'==============================================================
' События при нажатии рисунка
Private Sub Tree_ItemClick(ByVal Item As ListItem)
'MsgBox Item.Text
End Sub
Private Sub Tree_DblClick()
MsgBox Me.Tree.SelectedItem.Text, vbInformation, "Двойное нажатие"
End Sub
'==============================================================
' Другие свойства класса
Public Function Load(strSQL As String) As Boolean
Dim myKey As String, idx As Long
Dim rst As ADODB.Recordset
On Error GoTo 999
' Загрузка дерева
Set rst = New ADODB.Recordset
rst.Open strSQL, Application.CurrentProject.Connection
Me.Tree.ListItems.Clear
idx = 1
Do Until rst.EOF
' Создание узла и его ключей
myKey = "la_" rst!Тип
Me.Tree.ListItems.Add idx, myKey, Nz(rst!Наименование), CStr(rst!Icon), CStr(rst!Icon)
rst.MoveNext
idx = idx + 1
Loop
Load = True
998:
rst.Close
Set rst = Nothing
Err.Clear
Exit Function
999:
Load = False
MsgBox Err.Description
On Error Resume Next
Resume 998
End Function