Page 1 sur 1
[R] Couleur dans une colonne de Listview
Posté : dim. 16 nov. 2014 18:50
par aulus
Bonjour,
Je sais mettre une couleur sur une ligne d'une ListView, mais je n'ai aucune idée pour ne colorer qu'une colonne d'une Listview. J'ai bien trouvé ce lien :
http://www.autoitscript.com/forum/topic ... row-color/
Mais le code proposé ne fonctionne pas.
Est-ce seulement possible ?
Merci
Re: [..] couleur dans une colonne de Listview
Posté : dim. 16 nov. 2014 19:20
par mikell
C'est possible
Juste le subitem ou la colonne entière ?
Re: [..] couleur dans une colonne de Listview
Posté : dim. 16 nov. 2014 19:42
par aulus
Bonsoir Mikell,
la colonne entière (de son choix)
Re: [..] couleur dans une colonne de Listview
Posté : dim. 16 nov. 2014 20:01
par mikell
Have fun
► Afficher le texte
Code : Tout sélectionner
#include <GuiConstantsEx.au3>
#include <WindowsConstants.au3>
#include <GuiListView.au3>
#include <WinAPI.au3>
$hGUI = GUICreate("Test", 300, 200)
$hListView = _GUICtrlListView_Create($hGUI, "Items|SubItems|", 10, 10, 280, 180, $LVS_REPORT, $WS_EX_CLIENTEDGE)
_GUICtrlListView_SetExtendedListViewStyle($hListView, _
BitOR($LVS_EX_GRIDLINES, $LVS_EX_FULLROWSELECT))
For $i = 1 To 10
_GUICtrlListView_AddItem($hListView, "Item" & $i)
_GUICtrlListView_AddSubItem($hListView, $i - 1, "SubItem" & $i, 1)
_GUICtrlListView_AddSubItem($hListView, $i - 1, "SubItem" & $i, 2)
Next
GUIRegisterMsg($WM_NOTIFY, "WM_NOTIFY")
GUISetState()
Do
Until GUIGetMsg() = $GUI_EVENT_CLOSE
Func WM_NOTIFY($hWnd, $Msg, $wParam, $lParam)
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")
If $iDrawStage = $CDDS_PREPAINT Then Return $CDRF_NOTIFYITEMDRAW
If $iDrawStage = $CDDS_ITEMPREPAINT Then Return $CDRF_NOTIFYSUBITEMDRAW
Local $iSubItem = DllStructGetData($tCustDraw, "iSubItem")
; Local $iItem = DllStructGetData($tCustDraw, "dwItemSpec")
Local $iColor
If $iSubItem = 0 Then
$iColor = RGB2BGR(0xFF0000)
DllStructSetData($tCustDraw, "clrText", $iColor)
ElseIf $iSubItem = 1 Then
$iColor = RGB2BGR(0x000000)
DllStructSetData($tCustDraw, "clrText", $iColor)
DllStructSetData($tCustDraw, "clrTextBk", RGB2BGR(0xFFFF80))
ElseIf $iSubItem = 2 Then
$iColor = RGB2BGR(0x008080)
DllStructSetData($tCustDraw, "clrText", $iColor)
DllStructSetData($tCustDraw, "clrTextBk", RGB2BGR(0xFFFFFF))
EndIf
Return $CDRF_NEWFONT
EndSwitch
EndSwitch
Return $GUI_RUNDEFMSG
EndFunc ;==>WM_NOTIFY
Func RGB2BGR($iColor)
Return BitAND(BitShift(String(Binary($iColor)), 8), 0xFFFFFF)
EndFunc ;==>RGB2BGR()
Re: [..] couleur dans une colonne de Listview
Posté : dim. 16 nov. 2014 20:27
par aulus
Wahoo... pas simple mais efficace !
Merci mikell.