Gestion de la touche d'échappement

Le
Gloops
Bonjour tout le monde,

Je trouve pratique que la touche d'échappement permette de sélectionn=
er
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ém=
ent, plus
astreignante.

Bien entendu, il faut mettre l'aperçu 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 propriété qui m'aurait fait gagner du te=
mps,
mais lorsqu'un sous-formulaire est sélectionné, c'est la procédure =

Form_KeyPress du sous-formulaire qui est utilisée, sous réserve que
l'aperçu des touches du sous-formulaire soit activé, sinon c'est gé=
ré au
niveau du contrôle.

ça se présente 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 même chose à chaque niveau de sous-formulaire, l=
e
dernier niveau pouvant sans problème 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 sélectionné.

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 deuxième pression s=
ur
Echappement pourrait faire sélectionner le bouton.

Or, la propriété Dirty, active pendant qu'on modifie des données,
s'annule dès qu'on presse sur Echappement, avant que KeyPress soit
exécutée, donc on ne peut pas compter dessus pour différencier le
traitement.

Comme en plus les procédures de traitement des touches sont exécuté=
es
avant celles de traitement des données, du moins celles sur lesquelles =

j'ai eu l'idée de mettre des pauses


Ou alors activer un booléen lorsqu'on traite une touche de caractère =
?


Peut-être y a-t-il une solution plus élégante ?

Pour le moment je travaille sous Access 2003 SP2, Windows XP Pro 2002
SP2, sur une base au format Access 2000.
Vidéos High-Tech et Jeu Vidéo
Téléchargements
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