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

Griser une touche temporairement

2 réponses
Avatar
Fredo
Salut à tous,

Dans une application que je reprends, je souhaiterais griser une touche
après le 1er clic afin d'éviter les clics multiples.

Je ne peux pas Griser la touche, faire le traitement et ensuite rendre
active la touche car le code exécuté et remplis de reprisesaisie et
autres qui ne me garantisse pas un retour dans le code appelant.

J'ai tenté de griser la touche et de lancer une procédure dans un thread
qui au bout d'une petite tempo (1/2 seconde) rends la touche active.

Cela fonctionne bien mais comme tous les traitements lancé dans un
thread, le fait de manipuler un champ de la fenêtre provoque de temps en
temps une erreur fatale "erreur lors de la manipulation d'un thread".

Auriez vous une autre solution sachant que la solution de réécrire le
code contenant les reprisesaisies n'est pas une option :(.

Merci d'avance,

Fred

2 réponses

Avatar
Emmanuel Haefelé
"Fredo" a écrit

Bonjour,

Auriez vous une autre solution sachant que la solution de réécrire le
code contenant les reprisesaisies n'est pas une option :(.



Ce n'est pas une option mais je vais quand même te proposer un truc dans
ce sens.

Remplacer tous les RepriseSaisies() par des EcranPremier () suivi d'un
RETOUR

Et en fin de procédure de faire la chose suivante :

RETOUR

FIN :

MaTouche..etat = actif


Cordialement,

Emmanuel Haefelé.
Avatar
Fredo
Le 19/12/2011 10:19, Emmanuel Haefelé a écrit :
"Fredo" a écrit

Bonjour,

Auriez vous une autre solution sachant que la solution de réécrire le
code contenant les reprisesaisies n'est pas une option :(.



Ce n'est pas une option mais je vais quand même te proposer un truc dans
ce sens.

Remplacer tous les RepriseSaisies() par des EcranPremier () suivi d'un
RETOUR

Et en fin de procédure de faire la chose suivante :

RETOUR

FIN :

MaTouche..etat = actif


Cordialement,

Emmanuel Haefelé.




Bon, j'ai testé, cela fonctionne bien lorsque l'on a qu'un seul niveau
d'appel (normal) mais cela m'obligerais à faire trop de modifications
lorsque j'ai plusieurs empilages d'appels (le reprisesaisie est dans une
sous-sous-sous procédure :) )

J'ai donc modifié ma procédure de temporisation qui est dans le thread
et au lieu de débloquer directement le champ dans le thread je fais un
postmessage à ma fenêtre et c'est dans l'évènement que je débloque.

Un peu tordu mais cela fonctione.

Bon dev,

Fred