[R] Compter les cases cochées dans une listview
Posté : mer. 20 nov. 2019 14:12
Bonjour,
Si je créé une Listview et une fonction WM_NOTIFY($hWnd, $iMsg, $wParam, $lParam) avec ce code :
Lorsque je coche une case, la fonction suivante est exécutée :
Mais le chiffre retourné n'est pas bon (il correspond au nombre cases cochées AVANT le clic).
J'ai trouvé la solution en modifiant le code :
Et pour ma fonction UpdateStatusBar() j'ajoute à la fin :
Je me demandais juste s'il y avait une autre méthode pour obtenir le même résultat.
Si je créé une Listview et une fonction WM_NOTIFY($hWnd, $iMsg, $wParam, $lParam) avec ce code :
Lorsque je coche une case, la fonction suivante est exécutée :
Func UpdateStatusBar()
Local $iChecked = 0, $iSelected = 0
Local $iItemCount = _GUICtrlListView_GetItemCount($g_idListview)
Local $sText = ''
; Lignes sélectionnées
$iSelected = _GUICtrlListView_GetSelectedCount($g_idListview)
$sText = $iSelected & " ligne sélectionnée"
If $iSelected > 1 Then $sText &= "s"
If @UserName = 'wmoreau' Then _GUICtrlStatusBar_SetText($g_hStatus, $sText, 1)
; Cases cochées
For $i = 0 To $iItemCount - 1
If _GUICtrlListView_GetItemChecked($g_idListview, $i) Then $iChecked += 1
Next
$sText = $iChecked & " case cochée"
If $iChecked > 1 Then $sText &= "s"
If @UserName = 'wmoreau' Then _GUICtrlStatusBar_SetText($g_hStatus, $sText)
EndFunc ;==>UpdateStatusBar
Local $iChecked = 0, $iSelected = 0
Local $iItemCount = _GUICtrlListView_GetItemCount($g_idListview)
Local $sText = ''
; Lignes sélectionnées
$iSelected = _GUICtrlListView_GetSelectedCount($g_idListview)
$sText = $iSelected & " ligne sélectionnée"
If $iSelected > 1 Then $sText &= "s"
If @UserName = 'wmoreau' Then _GUICtrlStatusBar_SetText($g_hStatus, $sText, 1)
; Cases cochées
For $i = 0 To $iItemCount - 1
If _GUICtrlListView_GetItemChecked($g_idListview, $i) Then $iChecked += 1
Next
$sText = $iChecked & " case cochée"
If $iChecked > 1 Then $sText &= "s"
If @UserName = 'wmoreau' Then _GUICtrlStatusBar_SetText($g_hStatus, $sText)
EndFunc ;==>UpdateStatusBar
Mais le chiffre retourné n'est pas bon (il correspond au nombre cases cochées AVANT le clic).
J'ai trouvé la solution en modifiant le code :
Switch $hWndFrom
Case $hWndListView
Switch $iCode
Case $NM_CLICK
AdlibRegister('UpdateStatusBar', 10)
Case $hWndListView
Switch $iCode
Case $NM_CLICK
AdlibRegister('UpdateStatusBar', 10)
Et pour ma fonction UpdateStatusBar() j'ajoute à la fin :
Je me demandais juste s'il y avait une autre méthode pour obtenir le même résultat.