Ce type de question a été posée de nombreuses fois et des réponses ont été apportées.
Je n'arrive malheureusement pas à résoudre mon problème.
Si l'on désire changer la couleur d'une ligne, il suffit d'utiliser GUICtrlCreateListViewItem() puis GUICtrlSetColor().
Or j'utilise _GUICtrlListView_AddItem() car j'ai besoin de _GUICtrlListView_SetItemGroupID().
Dans ce cas je peux utiliser une fonction WM_NOTIFY() avec $NM_CUSTOMDRAW.
Mais DllStructSetData($tCustDraw, "clrText", $CLR_XXXX) ne change que la couleur de l'item ou du sous-item.
Je suis donc bloqué.
Merci d'avance pour votre aide.
Voici le code de la fonction WM_NOTIFY()
Local $tNMHDR, $hWndFrom, $iCode
$tNMHDR = DllStructCreate($tagNMHDR, $lParam)
$hWndFrom = DllStructGetData($tNMHDR, "hWndFrom")
$iCode = DllStructGetData($tNMHDR, "Code")
Switch $hWndFrom
Case $hListView
Switch $iCode
Case $NM_CUSTOMDRAW
Local $tCustDraw = DllStructCreate($tagNMLVCUSTOMDRAW, $lParam)
Local $iDrawStage = DllStructGetData($tCustDraw, "dwDrawStage")
Local $iSubItem = DllStructGetData($tCustDraw, "iSubItem")
Local $iItem = DllStructGetData($tCustDraw, "dwItemSpec")
If $iDrawStage = $CDDS_PREPAINT Then Return $CDRF_NOTIFYITEMDRAW
If $iDrawStage = $CDDS_ITEMPREPAINT Then
ControlListView($hGUI, "", $idListview, "DeSelect", $iItem)
_GUICtrlListView_SetItemFocused($hListView, $iItem, False)
Return $CDRF_NOTIFYSUBITEMDRAW
EndIf
; Changement de couleur
Local $sType = _GUICtrlListView_GetItemText($hListView, $iItem)
Local $sValue = _GUICtrlListView_GetItemText($hListView, $iItem, $iSubItem)
If StringRegExp($sType, 'Canard|Poulet', $STR_REGEXPMATCH) Then
DllStructSetData($tCustDraw, "clrText", $CLR_OLIVE)
ElseIf StringRegExp($sValue, 'Toto|Titi', $STR_REGEXPMATCH) Then
DllStructSetData($tCustDraw, "clrText", $CLR_RED) ; JE VOUDRAIS COLORISER TOUTE LA LIGNE
EndIf
Return $CDRF_NEWFONT
EndSwitch
EndSwitch
Return $GUI_RUNDEFMSG
EndFunc ;==>WM_NOTIFY