Je me casse la tête sur un petit soucis depuis quelques jours. Je n'arrive pas
à faire fonctionner le script suivant correctement. Quand on clic sur le listview,
pour sélectionner une ligne par exemple, ca provoque vraisemblablement un
refresh automatique de mon Listview et les items en rouge se rafraichissent avec
la valeur par défaut de ma variable qui détermine la couleur de mon item
( Enfin Si j'ai bien tout compris ). Je suis dans une impasse, si un superman
d'autoit avait une idée je serai bien content

Cordialement,
► Afficher le texte
Code : Tout sélectionner
#include <GuiConstantsEx.au3>
#include <WindowsConstants.au3>
#include <GuiListView.au3>
#include <FontConstants.au3>
#include <WinAPI.au3>
#include <ButtonConstants.au3>
Global $Flag
Global Const $CDDS_SUBITEMPREPAINT = BitOR($CDDS_ITEM, $CDDS_SUBITEM, $CDDS_PREPAINT)
Global $Font1 = _WinAPI_CreateFont(14, 0, 0, 0, $FW_BOLD)
Global $Font2 = _WinAPI_CreateFont(14, 0, 0, 0, $FW_NORMAL, False, False, False, $DEFAULT_CHARSET, $OUT_DEFAULT_PRECIS, _
$CLIP_DEFAULT_PRECIS, $DEFAULT_QUALITY, 0, "MS Sans Serif")
Global $Array1[6]
$Array1[0] = "JPM"
$Array1[1] = "Holger"
$Array1[2] = "Jon"
$Array1[3] = "Larry"
$Array1[4] = "Jeremy"
$Array1[5] = "Valik"
Global $Array2[6]
$Array2[0] = "JPM"
$Array2[1] = "HolgerX"
$Array2[2] = "Jon"
$Array2[3] = "LarryX"
$Array2[4] = "Jeremy"
$Array2[5] = "ValikX"
$hGUI = GUICreate("Test", 300, 300)
Global $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, $LVS_EX_INFOTIP))
GUIRegisterMsg($WM_NOTIFY, "WM_NOTIFY")
GUISetState(@SW_SHOW)
Remplir()
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
_WinAPI_DeleteObject($Font1)
_WinAPI_DeleteObject($Font2)
Exit
EndSwitch
WEnd
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, $hDC
;~ Switch $iItem
;~ Case 5
$hDC = DllStructGetData($tCustDraw, "hdc")
If $iSubItem = 1 Then
if $Flag = True then
$iColor = RGB2BGR(0x00ff00)
_WinAPI_SelectObject($hDC, $Font2)
DllStructSetData($tCustDraw, "clrText", $iColor)
Else
$iColor = RGB2BGR(0xff0000)
_WinAPI_SelectObject($hDC, $Font2)
DllStructSetData($tCustDraw, "clrText", $iColor)
Endif
EndIf
Return $CDRF_NEWFONT
;~ EndSwitch
EndSwitch
EndSwitch
Return $GUI_RUNDEFMSG
EndFunc ;==>WM_NOTIFY
Func RGB2BGR($iColor)
Return BitAND(BitShift(String(Binary($iColor)), 8), 0xFFFFFF)
EndFunc ;==>RGB2BGR()[/
Func Remplir()
For $i = 0 To 5
_GUICtrlListView_AddItem($hListView, "Résultat :" & $i)
If $Array1[$i] = $Array2[$i] Then
$Flag = True
_GUICtrlListView_AddSubItem($hListView, $i , "Egal" & $i+1, 1)
Else
$Flag = False
_GUICtrlListView_AddSubItem($hListView, $i , "Pas Egal" & $i+1, 1)
EndIf
Next
EndFunc