PC SOFT

FOROS PROFESIONALES
WINDEVWEBDEV y WINDEV Mobile

Inicio → WINDEV 2025 → Intercepter caractere non numerique dans zone numérique
Intercepter caractere non numerique dans zone numérique
Iniciado por YWE, 21,feb. 2019 11:26 - 5 respuestas
Miembro registrado
47 mensajes
Publicado el 21,febrero 2019 - 11:26
Bonjour,
Une colonne de mon tableau est modifiable avec un masque numérique. J'ai coché l'option d'avoir l'icône de la calculette.
Mon besoin est le suivant : si l'utilisateur tape la touche "+", je déclenche l'affichage de la calculatrice.
Le problème est, vu que le champ est défini comme numérique lorsque je saisi "+", il ne se passe rien.
Quelqu'un a t'il une solution ?
Voici mon code pour chaque modification dans la zone

nTouchePlus est un entier = 0xbb
nToucheMoins est un entier = 0xbd
// Vérifie si la touche dont le code virtuel est 0xbb ou 0xbd a été appuyée
SI ToucheEnfoncée(nTouchePlus) _OU_ ToucheEnfoncée(nToucheMoins) ALORS
FAAExécute(COL_Valeur, faaCalculatrice)
FIN


Merci

--
Bon dev !
Publicado el 22,febrero 2019 - 09:39
Bonjour,

Tu pourrais créer un bouton caché dont le raccourci est + et un autre
avec -
Dans l'entrée de la cellule, tu rends ces boutons actifs. En sortie, tu
les désactives.
En plaçant le traitement dans les boutons cela devrait fonctionner.



--
Cordialement,
Pierre
Miembro registrado
356 mensajes
Publicado el 22,febrero 2019 - 12:24
Bonjour,

Tu peux aussi mettre dans le code d'initialisation de ta fenêtre un truc du genre
// Déclaration des constantes
WM_KEYDOWN est un entier = 256
VK_ADD est un entier = 107 // Le "+" du pavé numérique

// Déclaration de l'événement
Evénement(TESTSI_PLUS, SAI_NUM..Nom, WM_KEYDOWN)

PROCEDURE INTERNE TESTSI_PLUS(MessageWindows, wParam, lParam)
SI wParam=VK_ADD ALORS
Trace("Action si PLus")
FIN
FIN

en supposant que le champ se nomme "SAI_NUM"

--
Francis MOREL
http://www.SoftProtect.fr
Miembro registrado
47 mensajes
Publicado el 24,febrero 2019 - 11:29
Francis MOREL a écrit :
Bonjour,

Tu peux aussi mettre dans le code d'initialisation de ta fenêtre un truc du genre
// Déclaration des constantes
WM_KEYDOWN est un entier = 256
VK_ADD est un entier = 107 // Le "+" du pavé numérique

// Déclaration de l'événement
Evénement(TESTSI_PLUS, SAI_NUM..Nom, WM_KEYDOWN)

PROCEDURE INTERNE TESTSI_PLUS(MessageWindows, wParam, lParam)
SI wParam=VK_ADD ALORS
Trace("Action si PLus")
FIN
FIN

en supposant que le champ se nomme "SAI_NUM"

--
Francis MOREL
http://www.SoftProtect.fr


Merci Francis,

Cette méthode fonctionne pour un champ de saisi même avec un masque numérique.
Par contre ça ne marche pas pour la cellule d'un tableau avec le masque numérique.

--
Bon dev !
Version Windev : 23
Mensaje modificado, 24,febrero 2019 - 11:36
Miembro registrado
356 mensajes
Publicado el 24,febrero 2019 - 15:06
Bonjour,

Si, si ça marche aussi dans ce cas, il suffit simplement d'adapter le code et au besoin de tester la colonne concernée.
Avec par exemple :
// Déclaration de l'événement
Evénement(TESTSI_PLUS, Table1..Nom, WM_KEYDOWN)

PROCEDURE INTERNE TESTSI_PLUS(MessageWindows, wParam, lParam)
SI ChampEnCours="ColNumérique" _ET_ wParam=VK_ADD ALORS
Trace("Action si PLus")
FIN
FIN
Pour gestion du "+" sur la colonne "ColNumérique" de la "Table1"

Bon dev.
A+

--
Francis MOREL
http://www.SoftProtect.fr
Miembro registrado
47 mensajes
Publicado el 25,febrero 2019 - 10:05
Francis MOREL a écrit :
Bonjour,

Si, si ça marche aussi dans ce cas, il suffit simplement d'adapter le code et au besoin de tester la colonne concernée.
Avec par exemple :
// Déclaration de l'événement
Evénement(TESTSI_PLUS, Table1..Nom, WM_KEYDOWN)

PROCEDURE INTERNE TESTSI_PLUS(MessageWindows, wParam, lParam)
SI ChampEnCours="ColNumérique" _ET_ wParam=VK_ADD ALORS
Trace("Action si PLus")
FIN
FIN
Pour gestion du "+" sur la colonne "ColNumérique" de la "Table1"

Bon dev.
A+

--
Francis MOREL
http://www.SoftProtect.fr

Super ! Ca marche bien.
En fait j'avais déclaré de cette façon suivante, raison pour laquelle ça ne marchait pas
Evénement(TESTSI_PLUS, Table1.NomColonne..Nom, WM_KEYDOWN)


Je retiens finalement cette solution !

--
Bon dev !
Version Windev : 23