Problème combo

Résolu
Signaler
Messages postés
351
Date d'inscription
samedi 7 février 2004
Statut
Membre
Dernière intervention
6 octobre 2010
-
Messages postés
17288
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
27 septembre 2021
-
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

Messages postés
17288
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
27 septembre 2021
71
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)
Messages postés
17288
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
27 septembre 2021
71
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
Messages postés
1402
Date d'inscription
mardi 1 mai 2007
Statut
Membre
Dernière intervention
7 octobre 2012
5
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>
Messages postés
918
Date d'inscription
vendredi 3 août 2007
Statut
Membre
Dernière intervention
27 octobre 2008
10
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
Messages postés
282
Date d'inscription
lundi 29 septembre 2003
Statut
Membre
Dernière intervention
15 août 2012
2
est-il possible qu'un evenement click empeche de modifier la valeur de text ?
Messages postés
1402
Date d'inscription
mardi 1 mai 2007
Statut
Membre
Dernière intervention
7 octobre 2012
5
@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>
Messages postés
351
Date d'inscription
samedi 7 février 2004
Statut
Membre
Dernière intervention
6 octobre 2010

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...
Messages postés
17288
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
27 septembre 2021
71
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 = ...
Messages postés
351
Date d'inscription
samedi 7 février 2004
Statut
Membre
Dernière intervention
6 octobre 2010

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...
Messages postés
17288
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
27 septembre 2021
71
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
Messages postés
351
Date d'inscription
samedi 7 février 2004
Statut
Membre
Dernière intervention
6 octobre 2010

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...
Messages postés
918
Date d'inscription
vendredi 3 août 2007
Statut
Membre
Dernière intervention
27 octobre 2008
10
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 ????
Messages postés
351
Date d'inscription
samedi 7 février 2004
Statut
Membre
Dernière intervention
6 octobre 2010

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...
Messages postés
351
Date d'inscription
samedi 7 février 2004
Statut
Membre
Dernière intervention
6 octobre 2010

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...
Messages postés
17288
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
27 septembre 2021
71
ma fonction "SetLanguage" ne te conviens pas ?
testé, j'ai pas décellé de soucis :/
Messages postés
351
Date d'inscription
samedi 7 février 2004
Statut
Membre
Dernière intervention
6 octobre 2010

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...
Messages postés
351
Date d'inscription
samedi 7 février 2004
Statut
Membre
Dernière intervention
6 octobre 2010

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...
Messages postés
17288
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
27 septembre 2021
71
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)
Messages postés
351
Date d'inscription
samedi 7 février 2004
Statut
Membre
Dernière intervention
6 octobre 2010

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...
Messages postés
918
Date d'inscription
vendredi 3 août 2007
Statut
Membre
Dernière intervention
27 octobre 2008
10
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 ...