OVH Cloud OVH Cloud

combo/listbox

8 réponses
Avatar
scraper
bonjour à tous !

pour des raisons essentiellement esthétiques et de place, je souhaiterais
dans une form disposer d'un contrôle qui ressemble à un combobox, mais où la
saisie de texte serait impossible ...
en fait, tout serait impossible en dehors du choix de l'un des éléments de
la liste ...

j'ai essayé de jouer avec les propriétés Enabled et Locked, et bien entendu
ça ne fonctionne pas ...


par ailleurs, utiliser un listbox ne me convient pas vraiment ...

que puis je faire ?



merci d'avance de vos réponses


--

Attention ! Adresse mail invalide ...
Pour me contacter, cliquez sur le lien ci-dessous:
http://scraper.chez.tiscali.fr/contact.htm

scraper

8 réponses

Avatar
Patrick Philippot
Bonjour,

scraper wrote:
pour des raisons essentiellement esthétiques et de place, je
souhaiterais dans une form disposer d'un contrôle qui ressemble à un
combobox, mais où la saisie de texte serait impossible ...
en fait, tout serait impossible en dehors du choix de l'un des
éléments de la liste ...
que puis je faire ?



Donner le style 2 - DropdownList à votre combobox.

--
Patrick Philippot - Microsoft MVP
MainSoft Consulting Services
www.mainsoft.fr
Avatar
Christian HUBERT-HUGOUD- Xtrem7
Il y a une propriété qui permet cela :

Style

Cordialement

Christian Hubert-Hugoud

"scraper" a écrit dans le message de
news:

bonjour à tous !

pour des raisons essentiellement esthétiques et de place, je souhaiterais
dans une form disposer d'un contrôle qui ressemble à un combobox, mais où


la
saisie de texte serait impossible ...
en fait, tout serait impossible en dehors du choix de l'un des éléments de
la liste ...

j'ai essayé de jouer avec les propriétés Enabled et Locked, et bien


entendu
ça ne fonctionne pas ...


par ailleurs, utiliser un listbox ne me convient pas vraiment ...

que puis je faire ?



merci d'avance de vos réponses


--

Attention ! Adresse mail invalide ...
Pour me contacter, cliquez sur le lien ci-dessous:
http://scraper.chez.tiscali.fr/contact.htm

scraper




Avatar
scraper
Bonjour Patrick Philippot
(dans news:)
tu nous disais :

Bonjour,

scraper wrote:
pour des raisons essentiellement esthétiques et de place, je
souhaiterais dans une form disposer d'un contrôle qui ressemble à un
combobox, mais où la saisie de texte serait impossible ...
en fait, tout serait impossible en dehors du choix de l'un des
éléments de la liste ...
que puis je faire ?



Donner le style 2 - DropdownList à votre combobox.



merci de ta réponse
... j'aurais dû le mentionner, désolé ! mais cela ne me convient pas non
plus, car dans ce cas, Combo1.Text passe en lecture seule et j'ai besoin d'y
écrire, depuis le code ...

n'y a t il pas une autre solution ?


d'avance merci




--

Attention ! Adresse mail invalide ...
Pour me contacter, cliquez sur le lien ci-dessous:
http://scraper.chez.tiscali.fr/contact.htm

scraper
Avatar
François Picalausa
Hello,

Tu peux implémenter une recherche dans la liste, ou employer les API qui le
feront à ta place, pour retrouver l'élément:
Option Explicit
Private Declare Function SendMessage _
Lib "user32" _
Alias "SendMessageA" _
( _
ByVal hwnd As Long, _
ByVal wMsg As Long, _
ByVal wParam As Long, _
lParam As Any _
) _
As Long

Private Const CB_FINDSTRING = &H14C
Private Const CB_FINDSTRINGEXACT = &H158

Private Sub Form_Load()
Combo1.AddItem "Toto"
Combo1.AddItem "Test1"
Combo1.AddItem "Test2"
Combo1.AddItem "Bla"

Me.Show

'Comment sélectionner "Bla"?
'Soit on connait son index dans la liste :
Combo1.ListIndex = 3
Stop

'Soit, par le nom
'Note : -1 signifie qu'on cherche toute la liste
' avec 1, on commencerait à chercher à partir de Test2
'Sélectionne Bla
Combo1.ListIndex = SendMessage(Combo1.hwnd, CB_FINDSTRING, -1, ByVal
"Bla")
Stop

'La casse n'est pas importante
'Sélectionne Bla
Combo1.ListIndex = SendMessage(Combo1.hwnd, CB_FINDSTRING, -1, ByVal
"BlA")
Stop

'Si on ne connait pas le texte complet, on peut chercher sur une partie
seulement
'Sélectionne Test1
Combo1.ListIndex = SendMessage(Combo1.hwnd, CB_FINDSTRING, -1, ByVal
"test")
Stop

'Cela peut être un problème dans certains cas...
'On pourrait tester que l'item a le texte cherché
'ou faire directement une recherche exacte sur le texte
'Sélectionne rien
Combo1.ListIndex = SendMessage(Combo1.hwnd, CB_FINDSTRINGEXACT, -1,
ByVal "test")
Stop

'On peut toujours améliorer cela:
'Ajoute "Test", mais sélectionne "Test2"
AddItem2 "Test", Combo1
Stop
AddItem2 "Test2", Combo1
Stop
End Sub

Private Function AddItem2(Text As String, Combobox As Combobox) As Long
AddItem2 = SendMessage(Combobox.hwnd, CB_FINDSTRINGEXACT, -1, ByVal
Text)

If AddItem2 = -1 Then
Combobox.AddItem Text
AddItem2 = Combobox.NewIndex
End If

Combobox.ListIndex = AddItem2
End Function

--
François Picalausa

"scraper" a écrit dans le message de news:

Combo1.Text passe en lecture seule et j'ai
besoin d'y écrire, depuis le code ...

n'y a t il pas une autre solution ?


Avatar
Patrick Philippot
scraper wrote:
merci de ta réponse
... j'aurais dû le mentionner, désolé ! mais cela ne me convient pas
non plus, car dans ce cas, Combo1.Text passe en lecture seule et j'ai
besoin d'y écrire, depuis le code ...



Cela ne change rien. Il suffit de suppprimer l'élément à changer,
d'ajouter un élément avec le nouveau texte et de le sélectionner.

--
Patrick Philippot - Microsoft MVP
MainSoft Consulting Services
www.mainsoft.fr
Avatar
scraper
Bonjour Patrick Philippot
(dans news:eSMy$)
tu nous disais :

scraper wrote:
merci de ta réponse
... j'aurais dû le mentionner, désolé ! mais cela ne me convient pas
non plus, car dans ce cas, Combo1.Text passe en lecture seule et j'ai
besoin d'y écrire, depuis le code ...



Cela ne change rien. Il suffit de suppprimer l'élément à changer,
d'ajouter un élément avec le nouveau texte et de le sélectionner.



Ah ?

OK, merci, je vais voir comment adapter ça à mon code ... mais ça me semble
particulièrement lourd ...
merci tout de même !



--

Attention ! Adresse mail invalide ...
Pour me contacter, cliquez sur le lien ci-dessous:
http://scraper.chez.tiscali.fr/contact.htm

scraper
Avatar
Patrick Philippot
scraper wrote:
Cela ne change rien. Il suffit de suppprimer l'élément à changer,
d'ajouter un élément avec le nouveau texte et de le sélectionner.



Ah ?

OK, merci, je vais voir comment adapter ça à mon code ... mais ça me
semble particulièrement lourd ...



Lourd? Allons, allons, ça prend 3 lignes

MonCombo.RemoveItem (n)
MonCombo.AddItem "nouveau texte", n
MonCombo.ListIndex = n

Je ne vois pas comment on pourrait faire plus simple.

--
Patrick Philippot - Microsoft MVP
MainSoft Consulting Services
www.mainsoft.fr
Avatar
scraper
Bonjour Patrick Philippot
(dans news:)
tu nous disais :


OK, merci, je vais voir comment adapter ça à mon code ... mais ça me
semble particulièrement lourd ...



Lourd? Allons, allons, ça prend 3 lignes

MonCombo.RemoveItem (n)
MonCombo.AddItem "nouveau texte", n
MonCombo.ListIndex = n

Je ne vois pas comment on pourrait faire plus simple.



ooops !

toutes mes confuses !

j'avais capté "vider le combo" !!

effectivement, là, c'est jouable ...

encore mes excuses et un grand merci :-)

bonnes fêtes


--

Attention ! Adresse mail invalide ...
Pour me contacter, cliquez sur le lien ci-dessous:
http://scraper.chez.tiscali.fr/contact.htm

scraper