Добрый день
Как разместить изображение из ImageList в центре колонки ListView. В частности, в третьей колонке, нужно установить изображение (квадрат) по центру.
_GUICtrlListView_SetItem работает только с первой колонкой
Как разместить изображение из ImageList в центре колонки ListView. В частности, в третьей колонке, нужно установить изображение (квадрат) по центру.
_GUICtrlListView_SetItem работает только с первой колонкой
Код:
#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <GuiListView.au3>
#include <GuiImageList.au3>
$Form1 = GUICreate("ListView с несколькими колонками CheckBox", 482, 407, -1, -1)
$hListView = GUICtrlCreateListView ("Поле1|Поле2|Поле3", 8, 8, 457, 329,BitOR($LVS_REPORT,$LVS_SHOWSELALWAYS))
_GUICtrlListView_SetExtendedListViewStyle($hListView, BitOR($LVS_EX_GRIDLINES, $LVS_EX_FULLROWSELECT, $LVS_EX_SUBITEMIMAGES))
; Создать ImageList
$hImage = _GUIImageList_Create(16, 16, 5, 3)
_GUIImageList_AddIcon($hImage, @SystemDir & "\hnetcfg.dll", 2) ; UnCheck
_GUIImageList_AddIcon($hImage, @SystemDir & "\hnetcfg.dll", 1) ; Check
_GUICtrlListView_SetImageList($hListView, $hImage, 1)
For $i = 0 To 5
_GUICtrlListView_AddItem($hListView, "Test", 0)
_GUICtrlListView_AddSubItem($hListView, $i, "Test2",1)
_GUICtrlListView_AddSubItem($hListView, $i, "",2,0)
Next
_GUICtrlListView_SetColumnWidth($hListView,0,100)
_GUICtrlListView_SetColumnWidth($hListView,1,$LVSCW_AUTOSIZE_USEHEADER)
_GUICtrlListView_SetColumnWidth($hListView,2,100)
; Отступ
_GUICtrlListView_SetItem($hListView,'',0,0,0,-1,2) ; Работает только с 1 столбцом
_GUICtrlListView_SetItem($hListView,'',0,2,0,-1,2) ; Не работает
GUISetState(@SW_SHOW)
GUIRegisterMsg($WM_NOTIFY, "WM_NOTIFY")
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
EndSwitch
WEnd
Func WM_NOTIFY($hWnd, $iMsg, $iwParam, $ilParam)
Local $hWndFrom, $iCode, $tNMHDR, $hWndListView, $tInfo
$hWndListView = $hListView
If Not IsHWnd($hListView) Then $hWndListView = GUICtrlGetHandle($hListView)
$tNMHDR = DllStructCreate($tagNMHDR, $ilParam)
$hWndFrom = HWnd(DllStructGetData($tNMHDR, "hWndFrom"))
$iCode = DllStructGetData($tNMHDR, "Code")
$tInfo = DllStructCreate($tagNMITEMACTIVATE, $ilParam)
$iIndex = DllStructGetData($tInfo, "Index")
Switch $hWndFrom
Case $hWndListView
Switch $iCode
Case $NM_CLICK
$tInfo = DllStructCreate($tagNMITEMACTIVATE, $ilParam)
$itemindex = DllStructGetData($tInfo, "Index")
$subitemindex = DllStructGetData($tInfo, "SubItem")
$currentitemimage = _GUICtrlListView_GetItemImage($hWndListView, $itemindex, $subitemindex)
ConsoleWrite(@SystemDir)
If $currentitemimage = 0 Then
_GUICtrlListView_SetItemImage($hWndListView, $itemindex, 1, $subitemindex)
ElseIf $currentitemimage = 1 Then
_GUICtrlListView_SetItemImage($hWndListView, $itemindex, 0, $subitemindex)
EndIf
EndSwitch
EndSwitch
Return $GUI_RUNDEFMSG
EndFunc