# ListBox dans RealBasic (débutant)



## bidou (19 Mai 2003)

Bonjour,
Voila je cree une ListBox dans RealBasic avec trois champs à l'interieur que je nomme respectivement un, deux, trois.
Je désire qu'en cliquant sur ces champs un message different s'affiche pour chaque champ
pour le un message : vous avez choisi l'option 1
pour le deux message : vous avez choisi l'option 2
Idem pour le 3
Voci donc ce que j'ai rentré comme code dans la partie contole de la ListBox correspondant à un clic sur cellulle :
  row=1
  column=1
  MsgBox("Vous avez choisi l'option 1")
  row=2
  column=1
  MsgBox("Vous avez choisi l'option 2")
  row=3
  column=1
  MsgBox("Vous avez choisi l'option 3")

Malheureusement lorsque je clique sur n'importe quelle cellulle de la ListBox les 3 messages apparraisent systématiquement ! Pourquoi ?


----------



## jmini (20 Mai 2003)

Premièrement je voudrais dire que une grande communauté de developpeur francophonne se retrouve sur le forum RealBasic de  MacFr.com (pour le moment fermé, ils doivent avoir un pb...)

Donc si j'ai un conseil à te donner poste plutot la bas, tu trouvera plus de programmateur comptétant... ( je précise que je n'ai rien à voir avec les développeurs de macfr, et que je suis un simple programmateur RB qui a trouver la bas plus de réponses... - Je pense qu'il faut prendre les ressources la ou elle sont...)

Concerant ton pb c'est très simple... Tu n'as fait aucun test de condition...
Dans les List Box pas multiples... Le numéro de la ligne sélectionnée est .ListIndex (donc Self.ListBox1.ListIndex ou me.ListIndex si tu es dans un évenement de l'objet) Attention la première linge est 0 !!

Donc ton code devient
<font class="small">Code:</font><hr /><pre>Select Case Me.ListIndex
Case 0
MsgBox ("Vous avez choisi l'option 1")
Case 1
MsgBox ("Vous avez choisi l'option 2")
Case 2
MsgBox ("Vous avez choisi l'option 3")
End Select  </pre><hr /> 
Tu peux aussi écrire un code du type
 <font class="small">Code:</font><hr /><pre>  If Me.ListIndex&gt;-1 Then
    MsgBox ("Vous avez choisi l'option "+str(Me.ListIndex+1))
  End if </pre><hr /> 
Je précise que ces codes sont à mettre dans l'évenement Change() de la List Box...


----------



## bidou (20 Mai 2003)

Un grand merci Jmini. Cela fonctionne.
Bien que je ne comprenne pas pourquoi il faille plus mettre le code dans change que dans CellClick


----------



## jmini (20 Mai 2003)

Je n'utilise pas souvent les ListBox, et elles ont pas mal évoluée avec les dernière version...

CellClick convient tout à fait !!! (Change se produit plus souvent que CellClick, car change se produit aussi lors d'une déselection)

mais pour ce que tu veut faire CellClick convient tout à fait...

le paramettre row est en fait égal à Me.Listindex
Donc le code dans CellClick est :
<font class="small">Code:</font><hr /><pre>Select Case row
Case 0
   MsgBox ("Vous avez choisi l'option 1")
Case 1
   MsgBox ("Vous avez choisi l'option 2")
Case 2
   MsgBox ("Vous avez choisi l'option 3")
End Select</pre><hr />
ou

```
MsgBox ("Vous avez choisi l'option "+str(row+1))
```


----------



## bidou (21 Mai 2003)

Ok encore merci pour toutes ces explications.
Mais finalement après avoir testé les deux méthodes, la méthode change me semble plus réactive. Bizarre !


----------



## jmini (22 Mai 2003)

<blockquote><font class="small">Post&eacute; &agrave; l'origine par jmini:</font><hr /> * Premièrement je voudrais dire que une grande communauté de developpeurs francophonnes se retrouve sur le forum RealBasic de MacFr.com (pour le moment fermé, ils doivent avoir un pb...)
* 

[/QUOTE]
Tout est rentré dans l'ordre :  Forum RB chez MacFR

Sinon pour la différence entre CellClick et Change... Je ne suis pas asser doué pour t'expliquer précisément pourquoi... Peut être qu'en postant là-bas tu aura plus de réponces...


----------



## mfay (22 Mai 2003)

Moi je n'utiliserai pas CellClick.

En effet, j'utilise souvent les listes au clavier ! Et là, ça ne marche plus.


----------

