Gestion de la touche d'échappement

Le
Gloops
Bonjour tout le monde,

Je trouve pratique que la touche d'chappement permette de slectionn=
er
le bouton qui ferme le sous-formulaire, et laisse ensuite
l'utilisateur le temps de changer d'avis.

La proprit Cancel du bouton a le mrite de la simplicit, mais =
elle
dclenche directement l'action OnClick du bouton ds qu'on a press=

Echappement, y compris pour annuler une saisie. Il arrive donc que ce
soit un peu trop radical et prenne l'utilisateur par surprise.

J'ai donc prfr grer Form_KeyPress, plus souple mais, forcm=
ent, plus
astreignante.

Bien entendu, il faut mettre l'aperu des touches du formulaire Vra=
i.

Ensuite, ce n'est pas fini.

Depuis le formulaire principal, a se passe bien.

J'ignore si j'ai loup une proprit qui m'aurait fait gagner du te=
mps,
mais lorsqu'un sous-formulaire est slectionn, c'est la procdure =

Form_KeyPress du sous-formulaire qui est utilise, sous rserve que
l'aperu des touches du sous-formulaire soit activ, sinon c'est g=
r au
niveau du contrle.

a se prsente donc comme a :

- le Form_KeyPress du formulaire principal est Public
- dans le sous-formulaire :

Public Sub Form_KeyPress(KeyAscii As Integer)
If KeyAscii = 27 Then Parent.Form_KeyPress 27
End Sub

Et, bien entendu, la mme chose chaque niveau de sous-formulaire, l=
e
dernier niveau pouvant sans problme avoir une Form_KeyPress en Private=

(tant qu'il reste en dernier niveau).

Et, de fait, lorsque j'appuie sur Echappement, le bouton de fermeture
est slectionn.

L o je commence devenir pinailleur, c'est que lorsqu'on a comme=
nc
une saisie, on l'annule avec Echappement, et dans ce cas, je trouve
qu'on pourrait s'en tenir l. Eventuellement, une deuxime pression s=
ur
Echappement pourrait faire slectionner le bouton.

Or, la proprit Dirty, active pendant qu'on modifie des donnes,
s'annule ds qu'on presse sur Echappement, avant que KeyPress soit
excute, donc on ne peut pas compter dessus pour diffrencier le
traitement.

Comme en plus les procdures de traitement des touches sont excut=
es
avant celles de traitement des donnes, du moins celles sur lesquelles =

j'ai eu l'ide de mettre des pauses


Ou alors activer un boolen lorsqu'on traite une touche de caractre =
?


Peut-tre y a-t-il une solution plus lgante ?

Pour le moment je travaille sous Access 2003 SP2, Windows XP Pro 2002
SP2, sur une base au format Access 2000.
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
3stone
Le #6333331
Salut,

"Gloops"
Je trouve pratique que la touche d'échappement permette de sélectionner
le bouton qui ferme le sous-formulaire, et laisse ensuite à
l'utilisateur le temps de changer d'avis.

La propriété Cancel du bouton a le mérite de la simplicité, mais elle
déclenche directement l'action OnClick du bouton dès qu'on a pressé
Echappement, y compris pour annuler une saisie. Il arrive donc que ce
soit un peu trop radical et prenne l'utilisateur par surprise.

J'ai donc préféré gérer Form_KeyPress, plus souple mais, forcément, plus
astreignante.
<snip>

Je m'arrête là ;-)

Plus souple - plus astreignant...

Il a souvent été question de la touche Escape ici, mais il faut reconnaître
que, sauf cas très particulier - et dans ce cas on a de bonnes raisons -
cette touche ne devrait pas être détournée.

Si l'on a pas ces bonnes raisons, il suffit d'éduquer/former l'utilisateur ;-)

Ceci dit, on peut se limiter à regarder si on est en mode édition au niveau
du formulaire (dirty) et si non annuler le cancel par un keycode=0

AMHA

--
A+
Pierre (3stone) Access MVP
Perso: http://www.3stone.be/
MPFA: http://www.mpfa.info/ (infos générales)
Gloops
Le #6378001
3stone a écrit, le 21/11/2007 23:01 :
Ceci dit, on peut se limiter à regarder si on est en mode édition a u niveau
du formulaire (dirty) et si non annuler le cancel par un keycode=0


Oui, c'est bien l'idée que j'ai eue, mais comme je disais le Dirty est
"nettoyé" avant l'exécution des procédures de touches notamment Key Press.
Et si je ne m'abuse les procédures de traitement de données arrivent
après, donc on ne peut pas le mémoriser à partir de là.

C'est vrai qu'on pourrait préférer une autre touche pour la sortie, b on,
à défaut d'autre chose, c'est peut-être comme ça que ça va fini r.

Merci.

Publicité
Poster une réponse
Anonyme