ListView-изменение цвета текста всей строки при выборе CHECKBOXES
Приветствую ! Вопрос к профессионалам, скорее всего. Из просторов интернета накидал скрипт, но не могу понять как при выделении чекбокса изменять цвет строки.
Код:
#include-once
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <GuiListView.au3>
GUICreate("Как изменить цвет текста всей строки при выборе CHECKBOXES ?", 600, 600)
Global $ListView_TEST = GUICtrlCreateListView('', 100, 270, 400, 194, $LVS_SHOWSELALWAYS, $LVS_EX_FULLROWSELECT + $LVS_EX_CHECKBOXES + $WS_EX_CLIENTEDGE)
_GUICtrlListView_InsertColumn($ListView_TEST, 0, "Наименование 1", 200)
_GUICtrlListView_InsertColumn($ListView_TEST, 2, "Наименование 2", 200)
_GUICtrlListView_AddItem($ListView_TEST, 'Наименование 1-01', 0)
_GUICtrlListView_AddSubItem($ListView_TEST, 0, "Наименование 2-01", 1)
_GUICtrlListView_AddItem($ListView_TEST, 'Наименование 1-02', 1)
_GUICtrlListView_AddSubItem($ListView_TEST, 1, "Наименование 2-02", 1)
_GUICtrlListView_AddItem($ListView_TEST, 'Наименование 1-03', 2)
_GUICtrlListView_AddSubItem($ListView_TEST, 2, "Наименование 2-03", 1)
_GUICtrlListView_AddItem($ListView_TEST, 'Наименование 1-04', 3)
_GUICtrlListView_AddSubItem($ListView_TEST, 3, "Наименование 2-04", 1)
GUIRegisterMsg($WM_NOTIFY, 'WM_NOTIFY')
GUISetState()
Do
Until GUIGetMsg() = $GUI_EVENT_CLOSE
GUIDelete()
Func WM_NOTIFY($hWnd, $iMsg, $wParam, $lParam)
Local $tNMHDR, $iIDFrom, $iCode
$tNMHDR = DllStructCreate($tagNMHDR, $lParam)
$iIDFrom = DllStructGetData($tNMHDR, "IDFrom")
$iCode = DllStructGetData($tNMHDR, "Code")
Switch $iIDFrom
Case $ListView_TEST ; It is our ListView
Switch $iCode
Case $NM_CUSTOMDRAW
Local $tNMLVCUSTOMDRAW = DllStructCreate($tagNMLVCUSTOMDRAW, $lParam)
Local $dwDrawStage = DllStructGetData($tNMLVCUSTOMDRAW, "dwDrawStage")
Switch $dwDrawStage
Case $CDDS_PREPAINT ; Before the paint cycle begins
Return $CDRF_NOTIFYITEMDRAW
Case $CDDS_ITEMPREPAINT ; Before painting an item
Return $CDRF_NOTIFYSUBITEMDRAW ; Notify the parent window of any SUBITEM-related drawing operations
Case BitOR($CDDS_ITEMPREPAINT, $CDDS_SUBITEM) ; Before painting a subitem
Local $iItemParam = DllStructGetData($tNMLVCUSTOMDRAW, "lItemlParam") ; Item param (item control ID)
Local $iSubItem = DllStructGetData($tNMLVCUSTOMDRAW, "iSubItem") ; Subitem index
DllStructSetData($tNMLVCUSTOMDRAW, "ClrText", 0xFF00FF) ; Backcolor white
EndSwitch
Case $NM_CLICK ; An item was clicked
$tInfo = DllStructCreate($tagNMITEMACTIVATE, $lParam)
$iIndex = DllStructGetData($tInfo, "Index")
$SubItem = DllStructGetData($tInfo, "SubItem")
; $iItemParam = DllStructGetData( $tInfo, "lItemlParam" )
If $SubItem = 0 Then
$hListViewRead = _GUICtrlListView_GetItemTextArray($ListView_TEST, $iIndex)
; MsgBox_Info($hListViewRead[2] & @CRLF & _GUICtrlListView_GetItemChecked($ListView_TEST, $iIndex))
;Перевёртышь
If _GUICtrlListView_GetItemChecked($ListView_TEST, $iIndex) = False Then
;Выбрано
Else
;Не выбрано
EndIf
EndIf
EndSwitch
EndSwitch
EndFunc ;==>WM_NOTIFY
|