📄 uclistview.ctl
字号:
'-- Trap next UserControl messages...
Call Subclass_AddMsg(UserControl.hWnd, WM_MOUSEACTIVATE, MSG_BEFORE)
Call Subclass_AddMsg(UserControl.hWnd, WM_NOTIFY, MSG_BEFORE)
'-- Trap next ListView messages...
Call Subclass_AddMsg(m_hListView, WM_SETFOCUS, MSG_BEFORE)
Call Subclass_AddMsg(m_hListView, WM_KEYDOWN, MSG_BEFORE)
Call Subclass_AddMsg(m_hListView, WM_CHAR, MSG_BEFORE)
Call Subclass_AddMsg(m_hListView, WM_KEYUP, MSG_BEFORE)
Call Subclass_AddMsg(m_hListView, WM_LBUTTONDOWN, MSG_BEFORE)
Call Subclass_AddMsg(m_hListView, WM_RBUTTONDOWN, MSG_BEFORE)
Call Subclass_AddMsg(m_hListView, WM_MBUTTONDOWN, MSG_BEFORE)
Call Subclass_AddMsg(m_hListView, WM_MOUSEMOVE, MSG_BEFORE)
Call Subclass_AddMsg(m_hListView, WM_LBUTTONUP, MSG_BEFORE)
Call Subclass_AddMsg(m_hListView, WM_RBUTTONUP, MSG_BEFORE)
Call Subclass_AddMsg(m_hListView, WM_MBUTTONUP, MSG_BEFORE)
'-- ListView mouse enter/leave support // mouse pos. initialization
m_bTrack = True
m_bTrackUser32 = pvIsFunctionExported("TrackMouseEvent", "User32")
If (Not m_bTrackUser32) Then
If (Not pvIsFunctionExported("_TrackMouseEvent", "Comctl32")) Then
m_bTrack = False
End If
End If
If (m_bTrack) Then
Call Subclass_AddMsg(m_hListView, WM_MOUSELEAVE, MSG_BEFORE)
End If
m_snxL = -1
m_snyL = -1
'-- Initialize IOLEInPlaceActiveObject
Call mIOleInPlaceActivate.InitIPAO(m_uIPAO, Me)
End If
End If
End Function
Public Function InitializeImageListSmall( _
Optional ByVal ImageWidth As Integer = 16, _
Optional ByVal ImageHeight As Integer = 16) As Boolean
If (m_hListView) Then
Call pvDestroyImageListSmall
m_hILSmall = ImageList_Create(ImageWidth, ImageHeight, ILC_COLOR32 Or ILC_MASK, 0, 0)
Call SendMessageLong(m_hListView, LVM_SETIMAGELIST, LVSIL_SMALL, m_hILSmall)
InitializeImageListSmall = (m_hILSmall <> 0)
End If
End Function
Public Function InitializeImageListLarge( _
Optional ByVal ImageWidth As Integer = 32, _
Optional ByVal ImageHeight As Integer = 32) As Boolean
If (m_hListView) Then
Call pvDestroyImageListLarge
m_hILLarge = ImageList_Create(ImageWidth, ImageHeight, ILC_COLOR32 Or ILC_MASK, 0, 0)
Call SendMessageLong(m_hListView, LVM_SETIMAGELIST, LVSIL_NORMAL, m_hILLarge)
InitializeImageListLarge = (m_hILLarge <> 0)
End If
End Function
Public Function InitializeImageListHeader( _
Optional ByVal ImageWidth As Integer = 16, _
Optional ByVal ImageHeight As Integer = 16) As Boolean
If (m_hListView) Then
Call pvDestroyImageListHeader
m_hILHeader = ImageList_Create(ImageWidth, ImageHeight, ILC_COLOR32 Or ILC_MASK, 0, 0)
InitializeImageListHeader = (m_hILHeader <> 0)
End If
End Function
Public Sub Refresh()
Call UserControl.Refresh
End Sub
'//
Public Function ImageListSmall_AddBitmap( _
ByVal hBitmap As Long, _
Optional ByVal MaskColor As Long = CLR_NONE _
) As Integer
If (m_hILSmall) Then
If (MaskColor <> CLR_NONE) Then
ImageListSmall_AddBitmap = ImageList_AddMasked(m_hILSmall, hBitmap, MaskColor)
Else
ImageListSmall_AddBitmap = ImageList_Add(m_hILSmall, hBitmap, 0)
End If
End If
End Function
Public Function ImageListSmall_AddIcon( _
ByVal hIcon As Long _
) As Integer
If (m_hILSmall) Then
ImageListSmall_AddIcon = ImageList_AddIcon(m_hILSmall, hIcon)
End If
End Function
Public Function ImageListLarge_AddBitmap( _
ByVal hBitmap As Long, _
Optional ByVal MaskColor As Long = CLR_NONE _
) As Integer
If (m_hILLarge) Then
If (MaskColor <> CLR_NONE) Then
ImageListLarge_AddBitmap = ImageList_AddMasked(m_hILLarge, hBitmap, MaskColor)
Else
ImageListLarge_AddBitmap = ImageList_Add(m_hILLarge, hBitmap, 0)
End If
End If
End Function
Public Function ImageListLarge_AddIcon( _
ByVal hIcon As Long _
) As Integer
If (m_hILLarge) Then
ImageListLarge_AddIcon = ImageList_AddIcon(m_hILLarge, hIcon)
End If
End Function
Public Function ImageListHeader_AddBitmap( _
ByVal hBitmap As Long, _
Optional ByVal MaskColor As Long = CLR_NONE _
) As Integer
If (m_hILHeader) Then
If (MaskColor <> CLR_NONE) Then
ImageListHeader_AddBitmap = ImageList_AddMasked(m_hILHeader, hBitmap, MaskColor)
Else
ImageListHeader_AddBitmap = ImageList_Add(m_hILHeader, hBitmap, 0)
End If
End If
End Function
Public Function ImageListHeader_AddIcon( _
ByVal hIcon As Long _
) As Integer
If (m_hILHeader) Then
ImageListHeader_AddIcon = ImageList_AddIcon(m_hILHeader, hIcon)
End If
End Function
'//
Public Function Clear( _
) As Boolean
If (m_hListView) Then
Clear = CBool(SendMessageLong(m_hListView, LVM_DELETEALLITEMS, 0, 0))
End If
End Function
Public Function Sort( _
Optional ByVal Column As Integer = 0, _
Optional ByVal SortOrder As eSortOrderConstants = [soAscending], _
Optional ByVal SortType As eSortTypeConstants = [stString] _
) As Boolean
If (m_hListView) Then
Sort = mListViewEx.Sort(m_hListView, Column, SortOrder, SortType)
End If
End Function
Public Function BackgroundPictureSet( _
ByVal URL As String _
) As Boolean
Dim uLBI As LVBKIMAGE
Dim lRet As Long
If (m_hListView) Then
With uLBI
.pszImage = URL & vbNullChar
.cchImageMax = Len(URL) + 1
.ulFlags = LVBKIF_SOURCE_URL Or LVBKIF_STYLE_TILE
End With
lRet = SendMessage(m_hListView, LVM_SETBKIMAGE, 0, uLBI)
If (lRet) Then
Call SendMessageLong(m_hListView, LVM_SETTEXTBKCOLOR, 0, CLR_NONE)
BackgroundPictureSet = True
End If
End If
End Function
'//
Public Function ColumnAdd( _
ByVal Column As Integer, _
ByVal Text As String, _
ByVal Width As Integer, _
Optional ByVal Align As eColumnAlignConstants = [caLeft], _
Optional ByVal Icon As Integer = -1 _
) As Boolean
Dim uLVC As LVCOLUMN
Dim uHDI As HDITEM
Dim bFirst As Boolean
If (m_hListView) Then
bFirst = (Me.ColumnCount = 0)
ColumnAdd = (SendMessage(m_hListView, LVM_INSERTCOLUMN, Column, uLVC) > -1)
If (ColumnAdd) Then
If (bFirst) Then
m_hHeader = pvHeaderhWnd()
Call SendMessageLong(m_hHeader, HDM_SETIMAGELIST, 0, m_hILHeader)
End If
With uHDI
.pszText = Text + vbNullChar
.cchTextMax = Len(Text) + 1
.cxy = Width
.iImage = Icon
.fmt = HDF_STRING Or Align * -(Column <> 0) Or HDF_IMAGE * -(Icon > -1) Or HDF_BITMAP_ON_RIGHT
.mask = HDI_TEXT Or HDI_WIDTH Or HDI_IMAGE Or HDI_FORMAT
End With
Call SendMessage(m_hHeader, HDM_SETITEM, Column, uHDI)
End If
End If
End Function
Public Function ColumnRemove( _
ByVal Column As Integer _
) As Boolean
If (m_hListView) Then
ColumnRemove = CBool(SendMessageLong(m_hListView, LVM_DELETECOLUMN, Column, 0))
If (Me.ColumnCount = 0) Then
m_hHeader = 0
End If
End If
End Function
Public Function ColumnAutosize( _
ByVal Column As Integer, _
Optional ByVal AutosizeType As eColumnAutosizeConstants = [caItem] _
) As Boolean
If (m_hListView) Then
ColumnAutosize = CBool(SendMessageLong(m_hListView, LVM_SETCOLUMNWIDTH, Column, AutosizeType))
End If
End Function
'//
Public Function ItemAdd( _
ByVal Item As Integer, _
ByVal Text As String, _
ByVal Indent As Integer, _
ByVal Icon As Integer _
) As Boolean
Dim uLV As LVITEM
If (m_hListView) Then
With uLV
.iItem = Item
.lparam = Item
.pszText = Text & vbNullChar
.cchTextMax = Len(Text) + 1
.iIndent = Indent
.iImage = Icon
.mask = LVIF_TEXT Or LVIF_INDENT Or LVIF_IMAGE Or LVIF_PARAM
End With
ItemAdd = (SendMessage(m_hListView, LVM_INSERTITEM, 0, uLV) > -1)
If (SendMessageLong(m_hListView, LVM_GETITEMCOUNT, 0, 0) = 1) Then
m_bFirstItem = True: Me.ItemFocused(0) = True
Else
m_bFirstItem = False
End If
End If
End Function
Public Function ItemRemove( _
ByVal Item As Integer _
) As Boolean
If (m_hListView) Then
ItemRemove = CBool(SendMessageLong(m_hListView, LVM_DELETEITEM, Item, 0))
End If
End Function
Public Function ItemEnsureVisible( _
ByVal Item As Integer _
) As Boolean
If (m_hListView) Then
ItemEnsureVisible = CBool(SendMessageLong(m_hListView, LVM_ENSUREVISIBLE, Item, 0))
End If
End Function
Public Function ItemFindText( _
ByVal Text As String, _
Optional ByVal StartItem As Integer = -1, _
Optional ByVal Coincidence As eCoincidenceConstants =
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -