Problème combo

Résolu
cs_Sator Messages postés 351 Date d'inscription samedi 7 février 2004 Statut Membre Dernière intervention 6 octobre 2010 - 14 avril 2008 à 20:09
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 - 16 avril 2008 à 06:08
Salut à tous! j'ai un truc bizar.... C'est le moin que l'on puisse dire...
voilà j'di différent fichier ini... français, anglais, italien....

J'ai fais une function que je lance depuis le form_load

puis au click du combo

l'ors du form_load aucun problème

mais quand je le fait depuis le combo click
il refuse de me mettre combo1.text =...
alors qu'il me prends les additems?

Combo1.Clear
     Combo1.Text = ReadINI("FrmOption", "Langue1", App.Path & "\Languages" & FrLg & ".ini")
     Combo1.AddItem ReadINI("FrmOption", "Langue1", App.Path & "\Languages" & FrLg & ".ini")
     Combo1.AddItem ReadINI("FrmOption", "Langue2", App.Path & "\Languages" & FrLg & ".ini")
     Combo1.AddItem ReadINI("FrmOption", "Langue3", App.Path & "\Languages" & FrLg & ".ini")
     Combo1.AddItem ReadINI("FrmOption", "Langue4", App.Path & "\Languages" & FrLg & ".ini")
     Combo1.AddItem ReadINI("FrmOption", "Langue5", App.Path & "\Languages" & FrLg & ".ini")
     Combo1.AddItem ReadINI("FrmOption", "Langue6", App.Path & "\Languages" & FrLg & ".ini")

Bref si quelqu'un à une idée... ce serais sympat de me dire ce qui se passe...

:)Sator :)

ps: si il ni avait pas de faute d'orthographe dans ce texte, il y a fort à parier que ce texte ne serait pas de moi...

24 réponses

Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 71
15 avril 2008 à 09:33
tu peux faire ce genre de choses :

Private Enum LanguageConstants
DE
EN
FR
IT
End Enum

Private Sub SetLanguage(ByVal veLanguage As LanguageConstants)
Dim i As Long
With Combo1
If .ListCount = 0 Then
For i = 0 To 3
.AddItem ""
Next i
End If

Select Case veLanguage
Case DE
.List(DE) = "DE..."
.List(EN) = "EN..."
.List(FR) = "FR..."
.List(IT) = "IT..."

Case EN
.List(DE) = "Deutch"
.List(EN) = "English"
.List(FR) = "French"
.List(IT) = "Italian"

Case FR
.List(DE) = "Allemand"
.List(EN) = "Anglais"
.List(FR) = "Français"
.List(IT) = "Italien"

Case IT
.List(DE) = "DE..."
.List(EN) = "EN..."
.List(FR) = "FR..."
.List(IT) = "IT..."
End Select
.ListIndex = veLanguage
End With
End Sub

Private Sub Combo1_Click()
SetLanguage Combo1.ListIndex
End Sub

Private Sub Form_Load()
SetLanguage FR
End Sub


(fonctionne en DropDownList ou DropDown)
3
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 71
15 avril 2008 à 09:46
la langue des items change...
et ces items, sont la liste des langues...

du coup, French deviens Français, ou Französich, etc...

mais inutile en fait de faire .Clear et .AddItem.... une simple affectation .List(0) = xxxxx
suffit
3
LIBRE_MAX Messages postés 1402 Date d'inscription mardi 1 mai 2007 Statut Membre Dernière intervention 7 octobre 2012 6
14 avril 2008 à 22:23
Salut,
Concrètement, l' événement Click d' un combo prend en charge
l' item sélectionné et donc l' élément déjà éxistant.Et pas ce qu' on compte y ajouter avec le retour d' une fonction.
Récupère le ReadIni suite au click sur un NuttonCommand; ça sera plus simple.

<hr />
... Y'en a même qui disent qu'ils l'ont vu voler.
/PRE>
0
Kristof_Koder Messages postés 918 Date d'inscription vendredi 3 août 2007 Statut Membre Dernière intervention 27 octobre 2008 10
14 avril 2008 à 22:29
Sur un click sur un combo, tu modifies le contenu de celui-ci ?! Ca me parait louche comme comportement, non ?
Ensuite, pourquoi fixer la propriété Text de ta combo ? I ln'y a que des AddItem à faire, non ? En plus tu tentes de définir la propriété Text de la combo,just eaprès un Clear sur celle-ci,donc elle ne contient plus aucun item.
Si le Style de ta combo vaut 2, il n'aceptera pas, c'est normal ! Ce que je ne comprend pas et que je n'explique pas, c'est pourquoi ton code fonctione qd appelé depuis le Load de la form ? Enfin, si, peut-être une explication, tjrs si ta combo est de style = 2 : Au moment du Load de la form, VB n'a pas encore défini le style de al combo, et il est donc à la valeur par défaut, soit 0, et la, tu peux définir le texte de la combo via une valeur non présente dans la liste de la combo
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
radcur Messages postés 282 Date d'inscription lundi 29 septembre 2003 Statut Membre Dernière intervention 15 août 2012 2
14 avril 2008 à 22:43
est-il possible qu'un evenement click empeche de modifier la valeur de text ?
0
LIBRE_MAX Messages postés 1402 Date d'inscription mardi 1 mai 2007 Statut Membre Dernière intervention 7 octobre 2012 6
14 avril 2008 à 23:48
@radcur,
l' événement Click sur un combo n' a pas pour vocation d' autoriser ou  d'empêcher quoi que ce soit !
C' est au code que tu metteras suite à cet événement qui de le faire.
Sauf que suite à un click, le texte de l' item est déjà sur la zone Text.
Si tu comptes empêcher la modification de celui-ci,pour une raison ou une autre, il faudra utiliser une variable ou tu sauves le text d' avant.

PS: on parle bien sûr d' un combo style DropDownList.

<hr />
... Y'en a même qui disent qu'ils l'ont vu voler.
/PRE>
0
cs_Sator Messages postés 351 Date d'inscription samedi 7 février 2004 Statut Membre Dernière intervention 6 octobre 2010
15 avril 2008 à 05:28
En fait le combo correspond à la langue choisie...
(text) Français
additem Français
additem Anglais
additem Italien
.... bref les langues européene
supposont que la personne click sur Anglais
(text) English
additem English
additem French

additem Italian

Donc pour résumer je dois effacer ma liste (combo1.clear) pour le remetre à jour.

:)Sator :)

ps: si il ni avait pas de faute d'orthographe dans ce texte, il y a fort à parier que ce texte ne serait pas de moi...
0
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 71
15 avril 2008 à 06:16
si ton ComboBox est en mode DropDown, no soucy.
mais je pense qu'il est en mode DropDownList (liste d'elements, non modifiables)

pour cela, il te faut simplement ajouter les elements AVANT d'en selectionner un (via .Text, par exemple)...


.CLEAR
.ADDITEM ...
.ADDITEM ...
.ADDITEM ...
.ADDITEM ...
.TEXT = ...
0
cs_Sator Messages postés 351 Date d'inscription samedi 7 février 2004 Statut Membre Dernière intervention 6 octobre 2010
15 avril 2008 à 09:16
merci Rendfield, suis en mode DropDown mais que je mette le .text avant ou après, il ni à aucun changement...

:)Sator :)

ps: si il ni avait pas de faute d'orthographe dans ce texte, il y a fort à parier que ce texte ne serait pas de moi...
0
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 71
15 avril 2008 à 09:24
le texte est bel et bien modifié... cepandant, une fois que le End Sub survient, l'éveneemnt Click fait encore des siennes...

en gros, voilà ce qui se produit, en pseudo VB code :

Case WM_LBTNDOWN
nItem = Récuperer élement cliqué
RaiseEvent Click
If ElementExisteToujours Then
Combo1.Text = RécupérerText ( nItem )
Else
Combo1.Text = ""
End If
0
cs_Sator Messages postés 351 Date d'inscription samedi 7 février 2004 Statut Membre Dernière intervention 6 octobre 2010
15 avril 2008 à 09:40
Merci infiniment, je dois partir un coup, je te tiens au courant merci infiniment

:)Sator :)

ps: si il ni avait pas de faute d'orthographe dans ce texte, il y a fort à parier que ce texte ne serait pas de moi...
0
Kristof_Koder Messages postés 918 Date d'inscription vendredi 3 août 2007 Statut Membre Dernière intervention 27 octobre 2008 10
15 avril 2008 à 09:40
Moi, ce que je ne comprend pas du tout, c'est pourquoi tu veux modifier la liste à chaque fois qu'un choix est fait dans cette liste ????
0
cs_Sator Messages postés 351 Date d'inscription samedi 7 février 2004 Statut Membre Dernière intervention 6 octobre 2010
15 avril 2008 à 09:48
imagine que tu fasse un logiciel multi-langues...
tu es d'accord que le mot "Français" se dis "French" en "Anglais"
donc imagine que tu soies un Anglais....
tu click sur Anglais....
du coup la liste du combo devient
(text=>)  English
(additem=>) French
.... etc.....

je n'ai pas d'autres exemple en tête, mais je suis sure qu'il doit y avoir d'autres utilisations...

:)Sator :)

ps: si il ni avait pas de faute d'orthographe dans ce texte, il y a fort à parier que ce texte ne serait pas de moi...
0
cs_Sator Messages postés 351 Date d'inscription samedi 7 février 2004 Statut Membre Dernière intervention 6 octobre 2010
15 avril 2008 à 09:54
Merci Rendfield, effectivement qu'il y à du changement, c'est l'effet inverse... il ne me met plus le text la première fois mais il me le met après... l'ors du rappel de function.... mais no soucis.... je suis sur la bonne piste... je le sens... merci milles fois.

:)Sator :)

ps: si il ni avait pas de faute d'orthographe dans ce texte, il y a fort à parier que ce texte ne serait pas de moi...
0
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 71
15 avril 2008 à 09:55
ma fonction "SetLanguage" ne te conviens pas ?
testé, j'ai pas décellé de soucis :/
0
cs_Sator Messages postés 351 Date d'inscription samedi 7 février 2004 Statut Membre Dernière intervention 6 octobre 2010
15 avril 2008 à 10:01
excuse-moi j'ai juste tester la manière rapide avec le combo1.index(0)... il doit y aller assez rapidement. donc je testerai le tout un peu plus tard... la première partie tu le me dans un module de classe?

:)Sator :)

ps: si il ni avait pas de faute d'orthographe dans ce texte, il y a fort à parier que ce texte ne serait pas de moi...
0
cs_Sator Messages postés 351 Date d'inscription samedi 7 février 2004 Statut Membre Dernière intervention 6 octobre 2010
15 avril 2008 à 10:02
je dois( tu auras compris)

:)Sator :)

ps: si il ni avait pas de faute d'orthographe dans ce texte, il y a fort à parier que ce texte ne serait pas de moi...
0
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 71
15 avril 2008 à 10:05
combo1.index(0) ?
...

non, tu places le tout tel quel dans le code de ta Form... (le Enum a placer tout tout en haut, dans les déclarations)
0
cs_Sator Messages postés 351 Date d'inscription samedi 7 février 2004 Statut Membre Dernière intervention 6 octobre 2010
15 avril 2008 à 10:11
excuse- mais je suis mal réveillé...
lg(1) = ReadINI("FrmOption", "Langue1", App.Path & "\Languages" & FrLg & ".ini")
   

With Combo1
   .List(0) = lg(1)
   .List(1) = lg(2)
...
end with

du coup je suis en retard.... @+

Merci encore

:)Sator :)

ps: si il ni avait pas de faute d'orthographe dans ce texte, il y a fort à parier que ce texte ne serait pas de moi...
0
Kristof_Koder Messages postés 918 Date d'inscription vendredi 3 août 2007 Statut Membre Dernière intervention 27 octobre 2008 10
15 avril 2008 à 18:47
Sator < Perso, je préfèrerais une liste (immuable) avec dedans les entrées suivante :
Deutch
English
Français
Italiano
...

Chaque nom de langue écrite dans SA langue. Ceci afin de m'éviter, moi français de base ne connaissant rien à l'allemand à "deviner" que si ton soft est "en version allemande", je dois sélectionner "Französich" !!
Mais ce n'est qu'une question de goût ...
0