Option Explicit
Private Declare Function SendMessageLong Lib "user32" Alias _ "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, _ ByVal wParam As Long, ByVal lParam As Long) As Long Private Declare Function SendMessage Lib "user32" Alias _ "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, _ ByVal wParam As Long, lParam As Any) As Long
Private Type LVITEM mask As Long iItem As Long iSubItem As Long state As Long stateMask As Long pszText As String cchTextMax As Long iImage As Long lParam As Long iIndent As Long End Type
Private Const LVM_FIRST As Long = &H1000& Private Const LVM_GETEXTENDEDLISTVIEWSTYLE As Long = (LVM_FIRST + 55) Private Const LVM_SETEXTENDEDLISTVIEWSTYLE As Long = (LVM_FIRST + 54) Private Const LVS_EX_SUBITEMIMAGES As Long = &H2& Private Const LVIF_IMAGE As Long = &H2& Private Const LVM_SETITEM As Long = (LVM_FIRST + 6)
Private Sub Form_Load() Dim i As Integer
For i = 1 To 3 lv.ColumnHeaders.Add , , i, lv.Width / 4 - 100 Next
lv.Icons = img.Icons lv.IconSize = 16
With lv .ListItems.Add 1, , "Eintrag 1", 1 .ListItems.Add 2, , "Eintrag 2", 4 .ListItems.Add 3, , "Eintrag 3", 5 .ListItems.Item(1).SubItems(1) = "Eintrag 1B" .ListItems.Item(1).SubItems(2) = "Eintrag 1C" .ListItems.Item(2).SubItems(1) = "Eintrag 2B" .ListItems.Item(2).SubItems(2) = "Eintrag 2C" .ListItems.Item(3).SubItems(1) = "Eintrag 3B" .ListItems.Item(3).SubItems(2) = "Eintrag 3C" End With
End Sub
Private Sub Command1_Click() Call SetLVSubImages(lv, 1, 1, 1, True) Call SetLVSubImages(lv, 1, 2, 2, True) Call SetLVSubImages(lv, 2, 1, 3, True) Call SetLVSubImages(lv, 2, 2, 4, True) Call SetLVSubImages(lv, 3, 1, 5, True) Call SetLVSubImages(lv, 3, 2, 6, True) End Sub
Private Sub SetLVSubImages(lv As ListView, ByVal Index, ByVal Column As Long, _ ByVal Image As Long, ByVal SubImagesOn As Boolean)
Dim lvStyle As Long, LV_Item As LVITEM lvStyle = SendMessageLong(lv.hwnd, _ LVM_GETEXTENDEDLISTVIEWSTYLE, 0, 0) If SubImagesOn Then lvStyle = lvStyle Or LVS_EX_SUBITEMIMAGES Else lvStyle = lvStyle And Not LVS_EX_SUBITEMIMAGES End If Call SendMessageLong(lv.hwnd, _ LVM_SETEXTENDEDLISTVIEWSTYLE, 0, lvStyle) If SubImagesOn Then With LV_Item .mask = LVIF_IMAGE .iSubItem = Column .iItem = Index - 1 .iImage = Image End With Call SendMessage(lv.hwnd, LVM_SETITEM, Index - 1, LV_Item) End If End Sub
|