[R] Listview avec case à cocher mais indépendante

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
Avatar du membre
franco
Niveau 7
Niveau 7
Messages : 343
Enregistré le : lun. 03 oct. 2011 22:37
Localisation : Liévin
Status : Hors ligne

[R] Listview avec case à cocher mais indépendante

#1

Message par franco »

Bonjour.

Je sais faire les listview avec des checkbox.
Le souci : j'aimerais qu'une seule case soit cochée.

Plus précisément, je ne veux pas qu'on puisse cocher plusieurs cases à la fois.
En gros, si une case est cochée, les autres sont automatiquement décochées.

Est-ce possible ?


Mon script est déjà codé.
Je vous joins un script minimaliste :
► Afficher le textecode
Et le script détaillé :
► Afficher le textecode

Merci de m'éclairer ma petite lanterne. :)


++
Modifié en dernier par franco le ven. 17 avr. 2015 16:50, modifié 1 fois.
L'entraide, c'est mon dada ;)
Avatar du membre
jbnh
Niveau 11
Niveau 11
Messages : 1932
Enregistré le : ven. 02 mai 2008 14:54
Localisation : Bruxelles
Status : Hors ligne

Re: [..] Listview avec case à cocher mais indépendante

#2

Message par jbnh »

Bon c'est pas terrible terrible, mais ca pourrait donner une piste :

Code : Tout sélectionner

#include <WindowsConstants.au3>
#include <GuiListView.au3>
#include <GUIConstantsEx.au3>
#include <MsgBoxConstants.au3>


Global $Form1 = GUICreate("Form1", 466, 120, 192, 124)
$DNS_LV = GUICtrlCreateListView("test1|test2|test3",10,10,400,100, -1, $LVS_EX_CHECKBOXES + $WS_EX_CLIENTEDGE + $LVS_EX_GRIDLINES)
$one = GUICtrlCreateListViewItem("1|2|3",$DNS_LV)
$two = GUICtrlCreateListViewItem("4|5|6",$DNS_LV)
$three = GUICtrlCreateListViewItem("7|8|9",$DNS_LV)
GUISetState(@SW_SHOW)


While 1
 $nMsg = GUIGetMsg()
 Switch $nMsg
  Case $GUI_EVENT_CLOSE  
   Exit
  Case $one
      If _IsChecked($one) Then
          GUICtrlSetState ($two, $GUI_UNCHECKED)
          GUICtrlSetState ($three, $GUI_UNCHECKED)
      endif 
 EndSwitch
WEnd
 
Func _IsChecked($idControlID)
    Return BitAND(GUICtrlRead($idControlID), $GUI_CHECKED) = $GUI_CHECKED
EndFunc   ;==>_IsChecked
Par contre l'unicité d'un check est gérée par les radio button...
Balise [..] devant votre requête en cours, [R] quand résolu | Pas de message concernant les bots !

Merci
Avatar du membre
walkson
Modérateur
Modérateur
Messages : 1038
Enregistré le : ven. 12 août 2011 19:49
Localisation : Hurepoix
Status : Hors ligne

Re: [..] Listview avec case à cocher mais indépendante

#3

Message par walkson »

Une autre solution toujours pas terrible
► Afficher le texte
[Edit] peut être mieux ainsi surtout s'il y a beaucoup d'items

Code : Tout sélectionner

        Case $aa To $cc
            $y = 0
            For $i = $aa To $cc
                If $i = $nMsg Then ExitLoop
                $y += 1
            Next
            _GUICtrlListView_SetItemChecked ( $DNS_LV, -1,False  )
            _GUICtrlListView_SetItemChecked ( $DNS_LV, $y,True  )
Cordialement,
Walkson
"Horas non numero nisi serenas " Le canon de midi
(Je ne compte que les heures heureuses)
Avatar du membre
franco
Niveau 7
Niveau 7
Messages : 343
Enregistré le : lun. 03 oct. 2011 22:37
Localisation : Liévin
Status : Hors ligne

Re: [..] Listview avec case à cocher mais indépendante

#4

Message par franco »

Salut à tous et merci de m'avoir répondu.

Le seul souci, c'est que je ne sais pas combien j'aurais d'item dans ma listview.


Du coup, je voulais utiliser ces deux fonctions :
_GUICtrlListView_GetItemChecked
_GUICtrlListView_SetItemChecked

En faisant comme ceci :
- Je détecte l'item sélectionné
- Je décoche donc les items précédents
- Je décoche donc les items suivants

Dans le cas présent, j'ai détecté l'item sélectionné.
Puis j'ai tout désélectionné.
Pour enfin resélectionner l'item détecté.

Et donc, faut que je mette cela dans la boucle while 1


Un exemple :
► Afficher le textecode
Le seul souci : si je coche la 1, puis la 2, puis la 3(etc), ca fonctionne...
Le reste se décoche.

Mais si je coche la 2, je ne peux pas cocher la 1 : ça reste cocher sur la 2.


Une idée ?


Merci. ;)
L'entraide, c'est mon dada ;)
Avatar du membre
walkson
Modérateur
Modérateur
Messages : 1038
Enregistré le : ven. 12 août 2011 19:49
Localisation : Hurepoix
Status : Hors ligne

Re: [..] Listview avec case à cocher mais indépendante

#5

Message par walkson »

et par cette méthode ?
► Afficher le texte
Il suffit de créer un array à la dimension de _FileCountLines($FileKeyInterfaces) selon votre code
Ce serait moins énergivore que d'écouter en permanence la listview (à mon humble avis)
Cordialement,
Walkson
"Horas non numero nisi serenas " Le canon de midi
(Je ne compte que les heures heureuses)
Avatar du membre
franco
Niveau 7
Niveau 7
Messages : 343
Enregistré le : lun. 03 oct. 2011 22:37
Localisation : Liévin
Status : Hors ligne

Re: [..] Listview avec case à cocher mais indépendante

#6

Message par franco »

Resalut :D


Merci Walkson !!


Ton dernier script m'a donné la solution : un grand merci.
J'ai pu l'adapter à mon script de départ.

Et ça fonctionne.
Et oui.. Moins (beaucoup moins) énergivore. :o


Voici le script :
► Afficher le textecode
Je passe en Résolu.

Merci à tous. :wink:
L'entraide, c'est mon dada ;)
Répondre