OVH Cloud OVH Cloud

Combo.RemoveItem ...

2 réponses
Avatar
scraper
bonjour à tous !

un léger souci avec un combobox ...

bon, je l'alimente par la lecture d'une valeur dans un fichier ini

pas de souci...

ensuite, lorsque je sélectionne un élément de la liste, et que je clique sur
le bouton de mon form, je réalise le traitement ... là aussi, tout va bien !

ce qui me gêne, c'est que j'arrive pas , une fois que l'élément a été
traité, à le supprimer, et simultanément , à faire afficher l'élément
suivant (ou du moins, celui qui se retrouve en tête de liste) dans la
fenêtre du combo

j'ai essayé ça :

Combo1.RemoveItem (Combo1.ListIndex)
Combo1.Text = Combo1.List(0)

pour supprimer l'élément qui vient d'être traité de la liste, et en afficher
un autre

mais je me retrouve avec une violente erreur 5 appel de procédure incorrect,
sur la première ligne ...

or, si je clique simplement sur la flêche du combo, sans changer l'élément
sélectionné, et que je poursuis mon code, j'ai pas d'erreur ...

on dirait que j'arrive pas à prendre le focus ??

merci d'avance de toutes vos suggestions ... :-)

--

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

scraper

2 réponses

Avatar
Zoury
Salut! :O)

Avant toute chose...
Combo1.RemoveItem (Combo1.ListIndex)



cette syntaxe n'est pas recommandé, utilise plutôt :
'***
Combo1.RemoveItem Combo1.ListIndex
' ou
Call Combo1.RemoveItem(Combo1.ListIndex)
'***
et lit ceci pour savoir pourquoi, regarde le quatrième bloc (commencant par
***) :
http://groups.google.com/groups?threadm=%23F0eGX6HDHA.2244%40TK2MSFTNGP10.phx.gbl


Maintenant ton problème :

Call Combo1.RemoveItem(Combo1.ListIndex)
Combo1.Text = Combo1.List(0)



Call Combo1.RemoveItem(Combo1.ListIndex)


Ici RemoveItem() enlève l'élément sélectionné qui est désigné par ListIndex.
Une fois l'élément sélectionné supprimer, le ListIndex devient égal à -1, ce
qui signifie qu'aucun élément n'est sélectionné.

Combo1.Text = Combo1.List(0)


Ici tu copies le texte de l'item de liste ayant l'index 0 dans le texte de
ta ComboBox. Ceci *ne sélectionne pas* l'item en question. ListIndex reste
à -1, c'est pourquoi l'appel suivant cause l'erreur 5.


Solution :
1. Si tu ne veux pas permettre à l'utilisateur d'écrire une valeur autre que
celles qui se trouvent dans la liste dans la ComboBox, place la propriété
Style de celle-ci à "2 - DropDown List" en designtime.
2. Une fois la propriété modifiée, ton code devrait fonctionner car la ligne
de code suivante Combo1.Text = Combo1.List(0) initialisera automatiquement
le ListIndex à 0. Cependant pourquoi ne pas simplement affecté la valeur 0
*directement* à la propriété ListIndex?
3. Valider si le ListIndex est plus grand que -1 avant de supprimer.

tu obtiens donc :
'***
If (Combo1.ListIndex > -1) Then
Call Combo1.RemoveItem(Combo1.ListIndex)
Combo1.ListIndex = 0
End If
'***

--
Cordialement
Yanick Lefebvre - MVP pour Visual Basic
http://faq.vb.free.fr/?rubrique=0 - http://www.mvps.org/vbnet/
http://www.mentalis.org/agnet/apiguide.shtml - http://www.mztools.com/

Merci de poster les réponses au groupe afin d'en faire profiter à tous
Avatar
scraper
Dans son post news:%,

Zoury a indiqué :

Salut! :O)

Avant toute chose...
Combo1.RemoveItem (Combo1.ListIndex)



cette syntaxe n'est pas recommandé, utilise plutôt :
'***
Combo1.RemoveItem Combo1.ListIndex



ah ? d'accord !

' ou
Call Combo1.RemoveItem(Combo1.ListIndex)
'***
et lit ceci pour savoir pourquoi, regarde le quatrième bloc
(commencant par ***) :



http://groups.google.com/groups?threadm=%23F0eGX6HDHA.2244%40TK2MSFTNGP10.phx.gbl

euh .... j'ai pas bien tout compris, là ?? :-((


Maintenant ton problème :



[...]

OK ... je comprends mieux ... :-)


Solution :
1. Si tu ne veux pas permettre à l'utilisateur d'écrire une valeur
autre que celles qui se trouvent dans la liste dans la ComboBox,
place la propriété Style de celle-ci à "2 - DropDown List" en
designtime.



oui, mais je peux pas, car ça me place les propriétés de combo1.text en
lecture seule, or le texte affiché dans le combo par défaut, varie selon
son contenu ??

et donc, j'ai toujours une erreur ... là, elle s'est déplacée, j'ai une
erreur sur
Combo1.Text = Combo1.List(0)



par contre, ça m'a donné l'idée de tester en fonction de Combo1.ListCount
...

est ce que ça, c'est correct ??

If Combo1.ListCount > 1 Then
Combo1.RemoveItem Combo1.ListIndex
Combo1.ListIndex = 0
Else Combo1.RemoveItem (0)
end if


--

scraper