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

Tester si un contrôle a le focus

9 réponses
Avatar
Archives
Bonjour,

Malgré quelques recherches dans ce groupe, je n'ai pas trouvé le moyen de
tester si un contrôle a le focus avant de le rendre invisible. Toutes les
rubriques que j'ai parcourues indiquent qu'il faut passer le focus a un
autre contrôle avant de le désactiver mais aucun ne précise comment savoir
si ce contrôle a effectivement le focus.

Quelqu'un sait-il comment tester si un contrôle a le focus ?

Merci

9 réponses

Avatar
3stone
Salut,

"Archives"
Malgré quelques recherches dans ce groupe, je n'ai pas trouvé le moyen de
tester si un contrôle a le focus avant de le rendre invisible. Toutes les
rubriques que j'ai parcourues indiquent qu'il faut passer le focus a un
autre contrôle avant de le désactiver mais aucun ne précise comment savoir
si ce contrôle a effectivement le focus.

Quelqu'un sait-il comment tester si un contrôle a le focus ?




Inutile en fait...

Il est plus simple de donner le focus à un contrôle défini
pour ensuite désactiver le contrôle désirer.


Me.ControleX.SetFocus
Me.MonControle.Enabled = False



--
A+
Pierre (3stone) Access MVP
-----------------------------
http://users.skynet.be/mpfa
-----------------------------

Avatar
Archives
Je ne partage pas votre avis.

Supposons que le contrôle 1 ait le focus.
On rend invisible le contrôle 2.
Pour celà, on force le focus à aller sur le contrôle 3.
Le focus 1 a perdu le focus pour rien.

C'est pour cette raison que je souhaite tetster si le focus 2 a ou non le
focus. S'il ne l'a pas, j'évite ainsi de faire perdre le focus au contrôle
1.


"3stone" a écrit dans le message de news:
ub6$
Salut,

"Archives"
Malgré quelques recherches dans ce groupe, je n'ai pas trouvé le moyen
de


tester si un contrôle a le focus avant de le rendre invisible. Toutes
les


rubriques que j'ai parcourues indiquent qu'il faut passer le focus a un
autre contrôle avant de le désactiver mais aucun ne précise comment
savoir


si ce contrôle a effectivement le focus.

Quelqu'un sait-il comment tester si un contrôle a le focus ?




Inutile en fait...

Il est plus simple de donner le focus à un contrôle défini
pour ensuite désactiver le contrôle désirer.


Me.ControleX.SetFocus
Me.MonControle.Enabled = False



Je ne partage pas votre avis.

Supposons que le contrôle 1 ait le focus.
On rend invisible le contrôle 2.
Pour celà, on force le focus à aller sur le contrôle 3.
Le focus 1 a perdu le focus pour rien.

C'est pour cette raison que je souhaite tester si le focus 2 a ou non le
focus. S'il ne l'a pas, j'évite ainsi de faire perdre le focus au contrôle
1.


Avatar
Raymond [mvp]
Bonsoir.

si c'est impératif tu testes le controle actif:

If Screen.ActiveForm.Name = Me.Name And _
Screen.ActiveControl.Name = "Moncontrol" Then
'ici je suis bien dans moncontrol
Else
' ici je ne suis pas dans moncontrol
End If

ce qui ne changera rien car le focus devant être à tel endroit et n'y étant
pas, faut-il se poser la question : où est-il ? ce qui sera encore plus
litigieux.
--
@+
Raymond Access MVP
http://access.seneque.free.fr/
http://access2003.free.fr/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"Archives" a écrit dans le message de
news:c570i2$9sb$
Je ne partage pas votre avis.

Supposons que le contrôle 1 ait le focus.
On rend invisible le contrôle 2.
Pour celà, on force le focus à aller sur le contrôle 3.
Le focus 1 a perdu le focus pour rien.

C'est pour cette raison que je souhaite tetster si le focus 2 a ou non le
focus. S'il ne l'a pas, j'évite ainsi de faire perdre le focus au contrôle
1.



Avatar
Anor
Bonjour,


"Archives" a écrit dans le message de
news:c570i2$9sb$
| Je ne partage pas votre avis.
|
| Supposons que le contrôle 1 ait le focus.
| On rend invisible le contrôle 2.
| Pour celà, on force le focus à aller sur le contrôle 3.
| Le focus 1 a perdu le focus pour rien.
|
| C'est pour cette raison que je souhaite tetster si le focus 2 a ou non le
| focus. S'il ne l'a pas, j'évite ainsi de faire perdre le focus au contrôle
| 1.

il y a beaucoup de contrôles à gérer ?
A mon avis, il va falloir exploiter les événements gotfocus et lostfocus de tous ces
contrôles de façon à ce que le contrôle qui reçoit le focus s'identifie dans une variable.

Ainsi, il ne restera plus qu'à interroger la valeur de la variable pour savoir quel
est le contrôle qui a reçu le focus et s'assurer qu'entre-temps il ne l'a pas perdu.

c'est un peu répétitif si beaucoup de contrôles, mais ça devrait être gérable .

à moins qu'il existe une propriété du controle accessible en lecture mais je ne pense pas.
--
à+
Arnaud
--------------------------------------------------
Conseils d'utilisation : http://users.skynet.be/mpfa/
Access Memorandum : http://memoaccess.free.fr
/Réponses souhaitées sur ce forum, merci/
--------------------------------------------------
Avatar
Archives
Merci pour ces réponses.

Je n'ai qu'un seul contrôle à tester, celui que je veux rendre invisible.
Je ne cherche pas vraiment à savoir quel contrôle à le focus, mais seulement
à savoir si le contrôle que je souhaite désactiver à le focus ou non. Donc
un seul test devrait suffire.

J'essaye demain la solution de Raymond

Bonsoir

"Anor" <http://memoaccess.free.fr/anor/email.htm> a écrit dans le message de
news:
Bonjour,


"Archives" a écrit dans le message de
news:c570i2$9sb$
| Je ne partage pas votre avis.
|
| Supposons que le contrôle 1 ait le focus.
| On rend invisible le contrôle 2.
| Pour celà, on force le focus à aller sur le contrôle 3.
| Le focus 1 a perdu le focus pour rien.
|
| C'est pour cette raison que je souhaite tetster si le focus 2 a ou non
le

| focus. S'il ne l'a pas, j'évite ainsi de faire perdre le focus au
contrôle

| 1.

il y a beaucoup de contrôles à gérer ?
A mon avis, il va falloir exploiter les événements gotfocus et lostfocus
de tous ces

contrôles de façon à ce que le contrôle qui reçoit le focus s'identifie
dans une variable.


Ainsi, il ne restera plus qu'à interroger la valeur de la variable pour
savoir quel

est le contrôle qui a reçu le focus et s'assurer qu'entre-temps il ne l'a
pas perdu.


c'est un peu répétitif si beaucoup de contrôles, mais ça devrait être
gérable .


à moins qu'il existe une propriété du controle accessible en lecture mais
je ne pense pas.




Merci pour ces réponses.

Je n'ai qu'un seul contrôle à tester, celui que je veux rendre invisible.
Je ne cherche pas vraiment à savoir quel contrôle à le focus, mais seulement
à savoir si le contrôle que je souhaite désactiver à le focus ou non. Donc
un seul test devrait suffire.

J'essaye demain la solution de Raymond

Bonsoir

Avatar
3stone
Salut,

"Archives"
Je ne partage pas votre avis.


Je ne le demande pas ;-))


Supposons que le contrôle 1 ait le focus.
On rend invisible le contrôle 2.


bon... et pour faire cela, tu te trouve où ?
en toute logique, sur le contrôle 1

sauf cas tout à fait spécial, bien sûr
une fonction *très* générique, par exemple...

ou des cas très beurg...
comme une routine sur timer qui touche à l'interface, par exemple.



--
A+
Pierre (3stone) Access MVP
-----------------------------
http://users.skynet.be/mpfa
-----------------------------

Avatar
bipbipcoyote
ce n'est pas le focus qu'il faut tester mais la
propriété "visible"
donc écrire

If [NomDuChamp].Visible = True Then
MsgBox "hello"
else
........etc....
End If



-----Message d'origine-----
Merci pour ces réponses.

Je n'ai qu'un seul contrôle à tester, celui que je veux
rendre invisible.

Je ne cherche pas vraiment à savoir quel contrôle à le
focus, mais seulement

à savoir si le contrôle que je souhaite désactiver à le
focus ou non. Donc

un seul test devrait suffire.

J'essaye demain la solution de Raymond

Bonsoir

"Anor" <http://memoaccess.free.fr/anor/email.htm> a
écrit dans le message de

news:
Bonjour,


"Archives" a écrit dans le
message de


news:c570i2$9sb$
| Je ne partage pas votre avis.
|
| Supposons que le contrôle 1 ait le focus.
| On rend invisible le contrôle 2.
| Pour celà, on force le focus à aller sur le contrôle
3.


| Le focus 1 a perdu le focus pour rien.
|
| C'est pour cette raison que je souhaite tetster si
le focus 2 a ou non


le
| focus. S'il ne l'a pas, j'évite ainsi de faire
perdre le focus au


contrôle
| 1.

il y a beaucoup de contrôles à gérer ?
A mon avis, il va falloir exploiter les événements
gotfocus et lostfocus


de tous ces
contrôles de façon à ce que le contrôle qui reçoit le
focus s'identifie


dans une variable.

Ainsi, il ne restera plus qu'à interroger la valeur de
la variable pour


savoir quel
est le contrôle qui a reçu le focus et s'assurer
qu'entre-temps il ne l'a


pas perdu.

c'est un peu répétitif si beaucoup de contrôles, mais
ça devrait être


gérable .

à moins qu'il existe une propriété du controle
accessible en lecture mais


je ne pense pas.



Merci pour ces réponses.

Je n'ai qu'un seul contrôle à tester, celui que je veux
rendre invisible.

Je ne cherche pas vraiment à savoir quel contrôle à le
focus, mais seulement

à savoir si le contrôle que je souhaite désactiver à le
focus ou non. Donc

un seul test devrait suffire.

J'essaye demain la solution de Raymond

Bonsoir


.




Avatar
Archives
"bipbipcoyote" a écrit dans le message
de news: 1666601c41f58$ac222b00$
ce n'est pas le focus qu'il faut tester mais la
propriété "visible"
donc écrire

If [NomDuChamp].Visible = True Then
MsgBox "hello"
else
........etc....
End If


Access refuse de désactiver un contrôle lorsque celui ci a le focus, d'où ma
question.
Avatar
Archives
Merci Raymond,

La fonction Screen."ActiveControl.Name" convient parfaitement.


"Raymond [mvp]" a écrit dans le message de
news:
Bonsoir.

si c'est impératif tu testes le controle actif:

If Screen.ActiveForm.Name = Me.Name And _
Screen.ActiveControl.Name = "Moncontrol" Then
'ici je suis bien dans moncontrol
Else
' ici je ne suis pas dans moncontrol
End If

ce qui ne changera rien car le focus devant être à tel endroit et n'y
étant

pas, faut-il se poser la question : où est-il ? ce qui sera encore plus
litigieux.
--
@+
Raymond Access MVP
http://access.seneque.free.fr/
http://access2003.free.fr/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"Archives" a écrit dans le message de
news:c570i2$9sb$
Je ne partage pas votre avis.

Supposons que le contrôle 1 ait le focus.
On rend invisible le contrôle 2.
Pour celà, on force le focus à aller sur le contrôle 3.
Le focus 1 a perdu le focus pour rien.

C'est pour cette raison que je souhaite tetster si le focus 2 a ou non
le


focus. S'il ne l'a pas, j'évite ainsi de faire perdre le focus au
contrôle


1.