PC SOFT

PROFESSIONAL NEWSGROUPS
WINDEVWEBDEV and WINDEV Mobile

Home → WINDEV 2024 → Empêcher saisie du caractère %
Empêcher saisie du caractère %
Started by alain.duc, Sep., 13 2004 12:29 PM - 8 replies
Posted on September, 13 2004 - 12:29 PM
Bonjour

J'aimerais empêcher l'utilisateur de saisir le caractère % dans un champ de saisie.

J'utilise le code suivant dans l'évênement Touche enfoncée du champ de saisie:

SI (ToucheEnfoncée(teShift) ET ToucheEnfoncée(ASC("5"))) ALORS
_EVE.Retour = 0
FIN

Le caractère % est malgré tout transmis au champ de saisie.

Est-ce que quelqu'un a une solution?

Merci de vos réponses

Alain
Posted on September, 13 2004 - 1:07 PM
Bonjour,

Utiliser _EVE.wParam dans l'événement 'MonChamp_OnKeyDown'.

cCar = _EVE.wParam
si asc(cCar) = 37 alors
traitement_d_effacement
...
fin

Bien cordialement,

Jacques De Schryver
Posted on September, 13 2004 - 3:21 PM
Puisque je me trouve dans l'evenement OnKeyDown la valeur de la touche n'a pas encore été affectée à mon champ. Je ne peux donc pas effacer le caractère % du champ.

J'aimerais en fait annuler l'evenement OnKeyDown. Faire comme si l'utilisateur n'avait pas appuyer sur cette touche.
Posted on September, 13 2004 - 3:23 PM
Sur la LST 57, il y a un exemple de contrôle de la saisie grâce aux expressions régulières.
Je pense que celà peut-être une solution élégante pour interdire
directement dans le champs la saisie du caractère %

à tester ...
Posted on September, 13 2004 - 3:52 PM
A mon avis il faut que tu mette ton évènement sur touche relachée !!!!
Posted on September, 13 2004 - 4:42 PM
encore plus simple
"Aurélien MACHABERT" <guest@newsgroup.fr> a écrit dans le message de
news:41458976@news.pcsoft.fr...

A mon avis il faut que tu mette ton évènement sur touche relachée !!!!




a chaque modification du champ tu fais monchamp = remplace(mochamp,"%","")
et hop le tour est joué !

Bon dév,

Fred
Posted on September, 13 2004 - 4:53 PM
en global
EXTERNE "KEYCONST.wl"
ccar est un entier

puis

A chaque modification de saisie1
ccar = _EVE.wParam

SI ccar = 192 ALORS
Info("Interception du caractère % depuis 'A chaque modification de saisie1'")
Saisie1 = Gauche(Saisie1,Taille(Saisie1) - 1)
RETOUR
FIN

//Le caractère % donne une valeur ascii de 192 au lieu de 37, mais bon,
cela marche.
Posted on September, 13 2004 - 5:59 PM
Bonjour Alain,
Ta remarque est pertinente, mais c'est l'avantage de cette methode, c'est
justement parce qu'elle n'est pas encore affichée que l'on test le contenu
du buffer.

A tester:
la méthode que t'indique Jacques De Schryver me parait donc la meilleur.
Il suffit juste de saisir ce qui suit pour effacer le caractère
//soit
_EVE.Retour = 0 //Rien du tout
//ou bien
RENVOYER 0 //Ce qui semble être la nouvelle syntaxte depuis WinDev7.

A+
[DrCharly93]

"Alain" <alain.duc@netplus.ch> a écrit dans le message de news:
41458212@news.pcsoft.fr...

Puisque je me trouve dans l'evenement OnKeyDown la valeur de la touche n'a
pas encore été affectée à mon champ. Je ne peux donc pas effacer le
caractère % du champ.

J'aimerais en fait annuler l'evenement OnKeyDown. Faire comme si
l'utilisateur n'avait pas appuyer sur cette touche.
Posted on September, 13 2004 - 7:21 PM
C'est presque la solution...

Il faut utiliser ce code dans l'evenement Touche appuyee(WM_CHAR) et non Touche enfoncee(WM_KEYDOWN):

SI (_EVE.wParam = 37) ALORS
RENVOYER Faux
//ou Renvoyer 0
//ou _EVE.Retour = 0
FIN


Merci de votre aide.

Alain