OVH Cloud OVH Cloud

Sélectionner un élément dans une ComboBox par valeur

2 réponses
Avatar
myname
Bonjour,

soit une comboBox avec les éléments suivants :

Rang 1: tata
Rang 2: titi
Rang 3: toto
Rang 4 : tutu

Peut-on facilement demander à cette combobox de se positionner
sur le rang qui contient une chaîne donnée ?

Exemple: j'appelle ma méthode avec "toto" et la combo se positionne en 3.

Merci !

2 réponses

Avatar
Zoury
Salut ! :O)

Exemple: j'appelle ma méthode avec "toto" et la combo se positionne en 3.



La méthode la plus efficace consiste à envoyer le message CB_FINDSTRING ou
CB_FINDSTRINGEXACT à la combobox via la fonction SendMessage(), la valeur
retourné sera l'index du texte correspondant :
'***
Option Explicit

' recherche l'item débutant par le texte spécifié
Private Const CB_FINDSTRING As Long = &H14C
' recherche l'item ayant exactement le texte spécifié
Private Const CB_FINDSTRINGEXACT As Long = &H158

Private Declare Function SendMessage _
Lib "user32" _
Alias "SendMessageA" _
( _
ByVal hwnd As Long, _
ByVal wMsg As Long, _
ByVal wParam As Long, _
ByRef lParam As Any _
) As Long

Private Sub Form_Load()

' placer Style à DropDown List
Call Combo1.AddItem("tata")
Call Combo1.AddItem("titi")
Call Combo1.AddItem("toto")
Call Combo1.AddItem("tutu")

Text1.Text = ""

End Sub

Private Sub Text1_Change()
' sélectionne le texte contenu dans Text1
' le troisième paramètre (wParam)
' désigne l'index de départ de la recherche
Combo1.ListIndex = SendMessage(Combo1.hwnd, CB_FINDSTRING, 0, ByVal
Text1.Text)
End Sub
'***

--
Cordialement
Yanick
MVP pour Visual Basic
Avatar
Christophe
Il y a plus simple en type DropDownlist : comboxbox.text = "toto"
Evidement si tu connais le contenu de ta combo.


Zoury a écrit :
Salut ! :O)


Exemple: j'appelle ma méthode avec "toto" et la combo se positionne en 3.




La méthode la plus efficace consiste à envoyer le message CB_FINDSTRING ou
CB_FINDSTRINGEXACT à la combobox via la fonction SendMessage(), la valeur
retourné sera l'index du texte correspondant :
'***
Option Explicit

' recherche l'item débutant par le texte spécifié
Private Const CB_FINDSTRING As Long = &H14C
' recherche l'item ayant exactement le texte spécifié
Private Const CB_FINDSTRINGEXACT As Long = &H158

Private Declare Function SendMessage _
Lib "user32" _
Alias "SendMessageA" _
( _
ByVal hwnd As Long, _
ByVal wMsg As Long, _
ByVal wParam As Long, _
ByRef lParam As Any _
) As Long

Private Sub Form_Load()

' placer Style à DropDown List
Call Combo1.AddItem("tata")
Call Combo1.AddItem("titi")
Call Combo1.AddItem("toto")
Call Combo1.AddItem("tutu")

Text1.Text = ""

End Sub

Private Sub Text1_Change()
' sélectionne le texte contenu dans Text1
' le troisième paramètre (wParam)
' désigne l'index de départ de la recherche
Combo1.ListIndex = SendMessage(Combo1.hwnd, CB_FINDSTRING, 0, ByVal
Text1.Text)
End Sub
'***