Доброго времени суток
Есть ListView с несколькими checkbox, которые берутся из ImageList.
Необходимо в заголовок ListView (колонка 0 и 2) добавить checkbox, при клике на который выделялась бы вся колонка. Смотрю в сторону функции:
Но не пойму как выбрать из ImageList 2 рисунок
Есть ListView с несколькими checkbox, которые берутся из ImageList.
Необходимо в заголовок ListView (колонка 0 и 2) добавить checkbox, при клике на который выделялась бы вся колонка. Смотрю в сторону функции:
Код:
_GUICtrlHeader_SetItemFormat ( $hWnd, $iIndex,BitOR($HDF_IMAGE,$HDF_STRING))
Но не пойму как выбрать из ImageList 2 рисунок
Код:
#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, "Test",0)
_GUICtrlListView_AddSubItem($hListView, $i, "Test",2,0)
Next
$hHdr = _GUICtrlListView_GetHeader($hListView) ; Получить идентификатор залоловка ListView
_GUICtrlHeader_SetItemFormat($hHdr, 0, BitOR($HDF_IMAGE,$HDF_STRING) )
_GUICtrlHeader_SetItemFormat($hHdr, 2, BitOR($HDF_IMAGE,$HDF_STRING) )
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
Case $LVN_COLUMNCLICK ; A column was clicked
$tInfo = DllStructCreate($tagNMLISTVIEW, $ilParam)
$ListViewColumn=DllStructGetData($tInfo, "SubItem") ; Возвращает индекс выделенной колонки
_GUICtrlHeader_SetItemFormat($hHdr, $ListViewColumn, BitOR($HDF_IMAGE,$HDF_STRING))
EndSwitch
EndSwitch
Return $GUI_RUNDEFMSG
EndFunc