Gestion des évènements quand un controle est disabled
2 réponses
GnarlyYoyo
Bonjour,
J'ai deux controles ComboBox sur une feuille. Si l'utilisateur modifie l'un
ou l'autre des combos, les fonctions combo_change appellent une fonction qui
met à jour une liste. C'est la même fonction dans les deux cas.
A l'initialisation, les ComboBox sont remplies avec certaines valeurs. Pour
ne pas appeler sans cesse les fonctions combo_change, la propriété enabled
est mise à False avant de remplire les combos, puis à True après.
Lorsque la propriété revient à True, l'évènement Change est déclenché une
fois pour chacun des deux combos. J'imagine qu'il correspond au dernier
changement qui a eu lieu, et non pas au fait que le combo a changé une fois
que la propriété Enabled revient à True.
Dans mon cas, je vais donc obtenir deux évènements change différents qui
vont appeler deux fois la même fonction.
Est-il possible "d'annuler" l'évènement change d'une des deux ComboBox avant
de remettre la propriété Enabled à true?
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Clive Lumb
GnarlyYoyo wrote:
Bonjour, J'ai deux controles ComboBox sur une feuille. Si l'utilisateur modifie l'un ou l'autre des combos, les fonctions combo_change appellent une fonction qui met à jour une liste. C'est la même fonction dans les deux cas.
A l'initialisation, les ComboBox sont remplies avec certaines valeurs. Pour ne pas appeler sans cesse les fonctions combo_change, la propriété enabled est mise à False avant de remplire les combos, puis à True après.
Lorsque la propriété revient à True, l'évènement Change est déclenché une fois pour chacun des deux combos. J'imagine qu'il correspond au dernier changement qui a eu lieu, et non pas au fait que le combo a changé une fois que la propriété Enabled revient à True.
Dans mon cas, je vais donc obtenir deux évènements change différents qui vont appeler deux fois la même fonction.
Est-il possible "d'annuler" l'évènement change d'une des deux ComboBox avant de remettre la propriété Enabled à true?
Merci d'avance!
Yoann
Très simple, Dans l'évenement change de Combo1 tu testes si Combo2 est enabled, si non tu sautes le code - comme ça seul celui du Combo2 va s'exécuter.
Autre possibilité, un variable global "démarrage" que tu mets tout de suite à vrai. Tu initialises tout, puis tu le mets à faux (en fin de form_load par exemple). Dans tes évenements de contrôle tu pourras tester ce variable et exécuter ou non le code selon son état.
Clive
GnarlyYoyo wrote:
Bonjour,
J'ai deux controles ComboBox sur une feuille. Si l'utilisateur
modifie l'un ou l'autre des combos, les fonctions combo_change
appellent une fonction qui met à jour une liste. C'est la même
fonction dans les deux cas.
A l'initialisation, les ComboBox sont remplies avec certaines
valeurs. Pour ne pas appeler sans cesse les fonctions combo_change,
la propriété enabled est mise à False avant de remplire les combos,
puis à True après.
Lorsque la propriété revient à True, l'évènement Change est déclenché
une fois pour chacun des deux combos. J'imagine qu'il correspond au
dernier changement qui a eu lieu, et non pas au fait que le combo a
changé une fois que la propriété Enabled revient à True.
Dans mon cas, je vais donc obtenir deux évènements change différents
qui vont appeler deux fois la même fonction.
Est-il possible "d'annuler" l'évènement change d'une des deux
ComboBox avant de remettre la propriété Enabled à true?
Merci d'avance!
Yoann
Très simple,
Dans l'évenement change de Combo1 tu testes si Combo2 est enabled, si non tu
sautes le code - comme ça seul celui du Combo2 va s'exécuter.
Autre possibilité, un variable global "démarrage" que tu mets tout de suite
à vrai. Tu initialises tout, puis tu le mets à faux (en fin de form_load par
exemple). Dans tes évenements de contrôle tu pourras tester ce variable et
exécuter ou non le code selon son état.
Bonjour, J'ai deux controles ComboBox sur une feuille. Si l'utilisateur modifie l'un ou l'autre des combos, les fonctions combo_change appellent une fonction qui met à jour une liste. C'est la même fonction dans les deux cas.
A l'initialisation, les ComboBox sont remplies avec certaines valeurs. Pour ne pas appeler sans cesse les fonctions combo_change, la propriété enabled est mise à False avant de remplire les combos, puis à True après.
Lorsque la propriété revient à True, l'évènement Change est déclenché une fois pour chacun des deux combos. J'imagine qu'il correspond au dernier changement qui a eu lieu, et non pas au fait que le combo a changé une fois que la propriété Enabled revient à True.
Dans mon cas, je vais donc obtenir deux évènements change différents qui vont appeler deux fois la même fonction.
Est-il possible "d'annuler" l'évènement change d'une des deux ComboBox avant de remettre la propriété Enabled à true?
Merci d'avance!
Yoann
Très simple, Dans l'évenement change de Combo1 tu testes si Combo2 est enabled, si non tu sautes le code - comme ça seul celui du Combo2 va s'exécuter.
Autre possibilité, un variable global "démarrage" que tu mets tout de suite à vrai. Tu initialises tout, puis tu le mets à faux (en fin de form_load par exemple). Dans tes évenements de contrôle tu pourras tester ce variable et exécuter ou non le code selon son état.
Clive
Driss HANIB
Oui je fais comme Clive Lumb explique, la deuxième version
lorsque je fais une mise à jour d'un controle qui 'réagit' lors de son changement je mets dans une variable booléenne globale (pour moi : Initialisation) initialisation = true ' là je fais mes changements..
initialisation = false
et dans mon combo je mets dans l'évènement Combo_Change
if initialisation = false then ' la je mets l'action que je veux
end if
Driss
"Clive Lumb" a écrit dans le message de news:
GnarlyYoyo wrote: > Bonjour, > J'ai deux controles ComboBox sur une feuille. Si l'utilisateur > modifie l'un ou l'autre des combos, les fonctions combo_change > appellent une fonction qui met à jour une liste. C'est la même > fonction dans les deux cas. > > A l'initialisation, les ComboBox sont remplies avec certaines > valeurs. Pour ne pas appeler sans cesse les fonctions combo_change, > la propriété enabled est mise à False avant de remplire les combos, > puis à True après. > > Lorsque la propriété revient à True, l'évènement Change est déclenché > une fois pour chacun des deux combos. J'imagine qu'il correspond au > dernier changement qui a eu lieu, et non pas au fait que le combo a > changé une fois que la propriété Enabled revient à True. > > Dans mon cas, je vais donc obtenir deux évènements change différents > qui vont appeler deux fois la même fonction. > > Est-il possible "d'annuler" l'évènement change d'une des deux > ComboBox avant de remettre la propriété Enabled à true? > > Merci d'avance! > > Yoann
Très simple, Dans l'évenement change de Combo1 tu testes si Combo2 est enabled, si non
tu
sautes le code - comme ça seul celui du Combo2 va s'exécuter.
Autre possibilité, un variable global "démarrage" que tu mets tout de
suite
à vrai. Tu initialises tout, puis tu le mets à faux (en fin de form_load
par
exemple). Dans tes évenements de contrôle tu pourras tester ce variable
et
exécuter ou non le code selon son état.
Clive
Oui je fais comme Clive Lumb explique, la deuxième version
lorsque je fais une mise à jour d'un controle qui 'réagit' lors de son
changement je mets dans une variable booléenne globale
(pour moi : Initialisation)
initialisation = true
' là je fais mes changements..
initialisation = false
et dans mon combo je mets dans l'évènement
Combo_Change
if initialisation = false then
' la je mets l'action que je veux
end if
Driss
"Clive Lumb" <clumb2@Gratuit_in_English.fr.invalid> a écrit dans le message
de news:uCQraXNNGHA.3936@TK2MSFTNGP10.phx.gbl...
GnarlyYoyo wrote:
> Bonjour,
> J'ai deux controles ComboBox sur une feuille. Si l'utilisateur
> modifie l'un ou l'autre des combos, les fonctions combo_change
> appellent une fonction qui met à jour une liste. C'est la même
> fonction dans les deux cas.
>
> A l'initialisation, les ComboBox sont remplies avec certaines
> valeurs. Pour ne pas appeler sans cesse les fonctions combo_change,
> la propriété enabled est mise à False avant de remplire les combos,
> puis à True après.
>
> Lorsque la propriété revient à True, l'évènement Change est déclenché
> une fois pour chacun des deux combos. J'imagine qu'il correspond au
> dernier changement qui a eu lieu, et non pas au fait que le combo a
> changé une fois que la propriété Enabled revient à True.
>
> Dans mon cas, je vais donc obtenir deux évènements change différents
> qui vont appeler deux fois la même fonction.
>
> Est-il possible "d'annuler" l'évènement change d'une des deux
> ComboBox avant de remettre la propriété Enabled à true?
>
> Merci d'avance!
>
> Yoann
Très simple,
Dans l'évenement change de Combo1 tu testes si Combo2 est enabled, si non
tu
sautes le code - comme ça seul celui du Combo2 va s'exécuter.
Autre possibilité, un variable global "démarrage" que tu mets tout de
suite
à vrai. Tu initialises tout, puis tu le mets à faux (en fin de form_load
par
exemple). Dans tes évenements de contrôle tu pourras tester ce variable
Oui je fais comme Clive Lumb explique, la deuxième version
lorsque je fais une mise à jour d'un controle qui 'réagit' lors de son changement je mets dans une variable booléenne globale (pour moi : Initialisation) initialisation = true ' là je fais mes changements..
initialisation = false
et dans mon combo je mets dans l'évènement Combo_Change
if initialisation = false then ' la je mets l'action que je veux
end if
Driss
"Clive Lumb" a écrit dans le message de news:
GnarlyYoyo wrote: > Bonjour, > J'ai deux controles ComboBox sur une feuille. Si l'utilisateur > modifie l'un ou l'autre des combos, les fonctions combo_change > appellent une fonction qui met à jour une liste. C'est la même > fonction dans les deux cas. > > A l'initialisation, les ComboBox sont remplies avec certaines > valeurs. Pour ne pas appeler sans cesse les fonctions combo_change, > la propriété enabled est mise à False avant de remplire les combos, > puis à True après. > > Lorsque la propriété revient à True, l'évènement Change est déclenché > une fois pour chacun des deux combos. J'imagine qu'il correspond au > dernier changement qui a eu lieu, et non pas au fait que le combo a > changé une fois que la propriété Enabled revient à True. > > Dans mon cas, je vais donc obtenir deux évènements change différents > qui vont appeler deux fois la même fonction. > > Est-il possible "d'annuler" l'évènement change d'une des deux > ComboBox avant de remettre la propriété Enabled à true? > > Merci d'avance! > > Yoann
Très simple, Dans l'évenement change de Combo1 tu testes si Combo2 est enabled, si non
tu
sautes le code - comme ça seul celui du Combo2 va s'exécuter.
Autre possibilité, un variable global "démarrage" que tu mets tout de
suite
à vrai. Tu initialises tout, puis tu le mets à faux (en fin de form_load
par
exemple). Dans tes évenements de contrôle tu pourras tester ce variable