Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Gestion des évènements quand un controle est disabled

2 réponses
Avatar
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?

Merci d'avance!

Yoann

2 réponses

Avatar
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
Avatar
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