Déselectionner dans les listbox

Soyez le premier à donner votre avis sur cette source.

Vue 13 276 fois - Téléchargée 492 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
Messages postés
40
Date d'inscription
vendredi 17 octobre 2003
Statut
Membre
Dernière intervention
8 juillet 2013

Pour tous ceux qui cherchent encore, comme je l'ai fait:

MaListeBox.Value = Null

Aussi simple que ça!
Messages postés
2
Date d'inscription
lundi 3 décembre 2007
Statut
Membre
Dernière intervention
10 décembre 2007

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
Messages postés
13
Date d'inscription
jeudi 16 janvier 2003
Statut
Membre
Dernière intervention
8 octobre 2008

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.