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

Répétition de touches

4 réponses
Avatar
jean saint jalmes
Bonjour,

Dans une application VB6.0, je positionne le paramètre KeyPreview des
feuilles à true et j'utilise les évènements Form_KeyDown pour déclancher
différentes actions.

Pendant le déroulement d'une action, je bloque la saisie en plaçant
l'intruction
"me.enebled = false" en début de procédure.

mais cela n'empèche pas l'évènement Form_KeyDown de se produire 2 fois
lorsque l'utilisateur appuie très rapidement sur une touche, un peu comme si
l'instruction "me.enabled = false" n'était pas instantanée.

Y a t-il un moyen de contourner ce problème autrement qu'en testant si une
action est déjà en cours ?

Merci pour votre aide.

Jean

4 réponses

Avatar
LE TROLL
Bonjour,

Y a sans doute plein de moyens, avec le Timer par exemple, lancé au
premier appui et arrêté après traitement complet, entre les deux, rejet de
la saisie clavier.

Par flag aussi:
load dim ok as boolean
okúlse
end sub
'
sub appui
if ok then exit sub
ok=true
traitement
fin de traitement
okúlse
end sub

Etc.

--
Cordialement ;o)
-
Logiciels, romans, contacts : http://irolog.free.fr
_______________________
.
.


"jean saint jalmes" a écrit dans
le message de news:
Bonjour,

Dans une application VB6.0, je positionne le paramètre KeyPreview des
feuilles à true et j'utilise les évènements Form_KeyDown pour déclancher
différentes actions.

Pendant le déroulement d'une action, je bloque la saisie en plaçant
l'intruction
"me.enebled = false" en début de procédure.

mais cela n'empèche pas l'évènement Form_KeyDown de se produire 2 fois
lorsque l'utilisateur appuie très rapidement sur une touche, un peu comme
si
l'instruction "me.enabled = false" n'était pas instantanée.

Y a t-il un moyen de contourner ce problème autrement qu'en testant si une
action est déjà en cours ?

Merci pour votre aide.

Jean


Avatar
bahn po
jean saint jalmes avait soumis l'idée :
Bonjour,

Dans une application VB6.0, je positionne le paramètre KeyPreview des
feuilles à true et j'utilise les évènements Form_KeyDown pour déclancher
différentes actions.

Pendant le déroulement d'une action, je bloque la saisie en plaçant
l'intruction
"me.enebled = false" en début de procédure.

mais cela n'empèche pas l'évènement Form_KeyDown de se produire 2 fois
lorsque l'utilisateur appuie très rapidement sur une touche, un peu comme si
l'instruction "me.enabled = false" n'était pas instantanée.

Y a t-il un moyen de contourner ce problème autrement qu'en testant si une
action est déjà en cours ?

Merci pour votre aide.

Jean



Essaye form_keyup.
Avatar
jean saint jalmes
Merci à tous les deux.

L'utilisation d'un indicateur de "fonction en cours" est une méthode que
j'ai déjà utilisée mais que je souhaitais éviter. En réalité, je teste la
disponibilité de la fenêtre (if enabled then enabled = false etc...).

L'évènement KeyUp n'améliore pas la situation par rapport à KeyDown.

En analysant un peu plus le problème, je me suis apperçu que seul le
contrôle MSHierarchicalFlexgrid accepte les doubles frappes lorsque le
conteneur est désactivé !

Jean
Avatar
bahn po
jean saint jalmes a pensé très fort :
Merci à tous les deux.

L'utilisation d'un indicateur de "fonction en cours" est une méthode que
j'ai déjà utilisée mais que je souhaitais éviter. En réalité, je teste la
disponibilité de la fenêtre (if enabled then enabled = false etc...).

L'évènement KeyUp n'améliore pas la situation par rapport à KeyDown.

En analysant un peu plus le problème, je me suis apperçu que seul le
contrôle MSHierarchicalFlexgrid accepte les doubles frappes lorsque le
conteneur est désactivé !

Jean



Et si tu passes l'argument Form1.KeyPreview = False pour bloquer la
saisie ?