Déselectionner dans les listbox

0/5 (3 avis)

Vue 13 645 fois - Téléchargée 513 fois

Description

Suite au message de Stan sur le forum, je met ce code qui permet de dessélectionner les selections dans des listbox.
Lorsqu'on click dans une listbox, ça enlève les sélections dans les autres.
Pour les list multiselect, il n'y a pas de probleme.
Par contre pour les simple select je n'ai pas trouvé de truc convenable, alors je supprime tous les item, puis je les replace dans la list.
C'est pas très propre, mais sur des list de petites tailles, ce n'est pas très génant.
Je n'ai rien trouvé qui puisse desselectionner directement dans les simple select
(alors si quelqu'un a cette soluce beaucoup plus propre, qu'il n'hésite pas...)

Pour utiliser le code:
Créer 6 listbox(les 3 premieres en multiselection et les 3 autres en simple) et coller le code qui suit.
ou télécharger le projet(2ko).

Source / Exemple :


'##############################################
' site: http://www.jeromax.free.fr
'##############################################
Const LB_RESETCONTENT = &H184 'efface tous les elements de la liste
Const LB_SETSEL = &H185       'selectionne le
Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As Any) As Long

Private Sub Form_Load()
    'remplissage des listes 'multiselection'
    List1.AddItem ("UN")
    List1.AddItem ("DEUX")
    List1.AddItem ("TROIS")
    List1.AddItem ("QUATRE")
    List2.AddItem ("CINQ")
    List2.AddItem ("SIX")
    List2.AddItem ("SEPT")
    List2.AddItem ("HUIT")
    List3.AddItem ("NEUF")
    List3.AddItem ("DIX")
    List3.AddItem ("ONZE")
    List3.AddItem ("DOUZE")
    'remplissage des listes 'simple selection'
    List4.AddItem ("UN")
    List4.AddItem ("DEUX")
    List4.AddItem ("TROIS")
    List4.AddItem ("QUATRE")
    List5.AddItem ("CINQ")
    List5.AddItem ("SIX")
    List5.AddItem ("SEPT")
    List5.AddItem ("HUIT")
    List6.AddItem ("NEUF")
    List6.AddItem ("DIX")
    List6.AddItem ("ONZE")
    List6.AddItem ("DOUZE")
End Sub

Private Sub List1_Click()
        'deselection de tous les item des 2 autres listes
        'false permet de desselectionner et true de selectionner
        lreturn = SendMessage(List2.hwnd, LB_SETSEL, False, -1&)
        lreturn = SendMessage(List3.hwnd, LB_SETSEL, False, -1&)
End Sub

Private Sub List2_Click()
        'deselection de tous les item des 2 autres listes
        lreturn = SendMessage(List1.hwnd, LB_SETSEL, False, -1&)
        lreturn = SendMessage(List3.hwnd, LB_SETSEL, False, -1&)
End Sub

Private Sub List3_Click()
        'deselection de tous les item des 2 autres listes
        lreturn = SendMessage(List1.hwnd, LB_SETSEL, False, -1&)
        lreturn = SendMessage(List2.hwnd, LB_SETSEL, False, -1&)
End Sub

Private Sub List4_Click()
        'on enleve tous les item des 2 autres listes
        lreturn = SendMessage(List5.hwnd, LB_RESETCONTENT, True, -1&)
        lreturn = SendMessage(List6.hwnd, LB_RESETCONTENT, True, -1&)
        'on re-rempli les 2 autres listes
        List5.AddItem ("CINQ")
        List5.AddItem ("SIX")
        List5.AddItem ("SEPT")
        List5.AddItem ("HUIT")
        List6.AddItem ("NEUF")
        List6.AddItem ("DIX")
        List6.AddItem ("ONZE")
        List6.AddItem ("DOUZE")
End Sub

Private Sub List5_Click()
        'on enleve tous les item des 2 autres listes
        lreturn = SendMessage(List4.hwnd, LB_RESETCONTENT, True, -1&)
        lreturn = SendMessage(List6.hwnd, LB_RESETCONTENT, True, -1&)
        'on re-rempli les 2 autres listes
        List4.AddItem ("UN")
        List4.AddItem ("DEUX")
        List4.AddItem ("TROIS")
        List4.AddItem ("QUATRE")
        List6.AddItem ("NEUF")
        List6.AddItem ("DIX")
        List6.AddItem ("ONZE")
        List6.AddItem ("DOUZE")
End Sub

Private Sub List6_Click()
        'on enleve tous les item des 2 autres listes
        lreturn = SendMessage(List4.hwnd, LB_RESETCONTENT, True, -1&)
        lreturn = SendMessage(List5.hwnd, LB_RESETCONTENT, True, -1&)
        'on re-rempli les 2 autres listes
        List4.AddItem ("UN")
        List4.AddItem ("DEUX")
        List4.AddItem ("TROIS")
        List4.AddItem ("QUATRE")
        List5.AddItem ("CINQ")
        List5.AddItem ("SIX")
        List5.AddItem ("SEPT")
        List5.AddItem ("HUIT")
End Sub

Codes Sources

A voir également

Ajouter un commentaire Commentaires
cs_Chrysostome Messages postés 40 Date d'inscription vendredi 17 octobre 2003 Statut Membre Dernière intervention 8 juillet 2013
16 févr. 2012 à 13:53
Pour tous ceux qui cherchent encore, comme je l'ai fait:

MaListeBox.Value = Null

Aussi simple que ça!
cs_sofiane72 Messages postés 2 Date d'inscription lundi 3 décembre 2007 Statut Membre Dernière intervention 10 décembre 2007
10 déc. 2007 à 15:31
bonjour

mon probleme est le suivant :

je veux remplir est vider une listBox

le remplissage est simple a faire
mais le vidage c' un peu compliquer pour moi

je sais que c'une question de debutant mais c' comme ça qu'on apprend

merci par avance de votre aide
boudas Messages postés 13 Date d'inscription jeudi 16 janvier 2003 Statut Membre Dernière intervention 8 octobre 2008
10 févr. 2003 à 16:56
ouh la la, que c'est compliqué !!
Voila ce que je propose, ça marche et je pense que c'est un peu plus avantageux.
Il suffit de deux listbox nomée offline et online et ensuite, quand on clique dans offline, ça désélectionne la sélection de online et vice-versa, tout en conservant la sélection de offline

Private Sub offline_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single)
Dim item
If offline.Text = "" Then Exit Sub ' pour effacer la sélection de l'autre que si vraiment, quelquechose est sélectionnée dans cette listbox
For item = 0 To online.ListCount - 1
online.Selected(item) = False ' on efface la sélection de tout les termes, un par un
Next
End Sub
Private Sub online_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single)

If online.Text = "" Then Exit Sub
Dim item

For item = 0 To offline.ListCount - 1
offline.Selected(item) = False
Next

End Sub

Au revoir, Boudas

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.