Func WM_NOTIFY($hWnd, $iMsg, $wParam, $lParam)
Local $tNMHDR = DllStructCreate($tagNMHDR, $lParam)
Local $hWndFrom = DllStructGetData($tNMHDR, 'hWndFrom')
Local $iCode = DllStructGetData($tNMHDR, 'Code')
Local $sItemText
Switch $hWndFrom
Case $hListView
Switch $iCode
Case $NM_CUSTOMDRAW
Local $tNMLVCD = DllStructCreate($tagNMLVCUSTOMDRAW, $lParam)
Local $iDrawStage = DllStructGetData($tNMLVCD, 'dwDrawStage')
Local $iItem = DllStructGetData($tNMLVCD, 'dwItemSpec')
Local $iSubItem = DllStructGetData($tNMLVCD, 'iSubItem')
Switch $iDrawStage
Case $CDDS_PREPAINT
Return $CDRF_NOTIFYITEMDRAW
Case $CDDS_ITEMPREPAINT
Return $CDRF_NOTIFYSUBITEMDRAW
Case BitOR($CDDS_ITEMPREPAINT, $CDDS_SUBITEM)
Local $sItemText = _GUICtrlListView_GetItemText($hWndFrom, $iItem, $iSubItem)
Local $iColor
Select
Case StringInStr($sItemText, '[True]')
$iColor = 0x95FF9F
_GUICtrlListView_SetItemText($hWndFrom, $iItem, StringReplace($sItemText,'[True]',''),$iSubItem); убрали ярлык цвета
; также здесь записываем цвет и кому он принадлежит, иными словами - индекс колонки (subitem)
Case StringInStr($sItemText, '[False]')
$iColor = 0xFF9595
_GUICtrlListView_SetItemText($hWndFrom, $iItem, StringReplace($sItemText,'[False]',''),$iSubItem); убрали ярлык цвета
Case StringInStr($sItemText, '[Warning]')
$iColor = 0xFFDD95
_GUICtrlListView_SetItemText($hWndFrom, $iItem, StringReplace($sItemText,'[Warning]',''),$iSubItem); убрали ярлык цвета
Case Else
$iColor = 0xFDFFB9
EndSelect
; здесь сначала считываем параметры, и потом на основе их - окрашиваем
DllStructSetData($tNMLVCD, 'clrTextBk', _BGRColor($iColor))
Return $CDRF_NEWFONT
EndSwitch
Case $NM_CLICK ; Sent by a list-view control when the user moves the mouse over an item
$tInfo = DllStructCreate($tagNMLISTVIEW, $lParam)
$iSubItem = DllStructGetData($tInfo, "SubItem")
If $iSubItem <> $iSubItemLast Then
If $iSubItemLast = 0 Then
$iWidth = 180
Else
$iWidth = 60
EndIf
_GUICtrlListView_SetColumnWidth($hListView, $iSubItemLast, $iWidth)
_GUICtrlListView_SetColumnWidth($hListView, $iSubItem, 180)
_GUICtrlListView_BeginUpdate($hListView)
_GUICtrlListView_EndUpdate($hListView)
$iSubItemLast = $iSubItem
EndIf
Case $NM_RCLICK
$aIndex = _GUICtrlListView_GetSelectedIndices($hListView, True)
If $aIndex[0] <> 0 Then
_ShowMenu($hGui, $hMenu, $hListView)
EndIf
EndSwitch
EndSwitch
Return $GUI_RUNDEFMSG
EndFunc ;==>WM_NOTIFY