Marc
Nombre de messages : 2466 Age : 63 Localisation : TOURS (37) Date d'inscription : 17/03/2014
| Sujet: Saisie en temps réel d'un EDIT Sam 7 Mar 2015 - 16:36 | |
| Bonjour à tous, Voici mon dernier code pour le contrôle d’un édit en temps réel pour des nombres POSITIFS. Il permet d’effectuer un calcul au fur et à mesure que l’on tape un chiffre. Remplacement automatique de la virgule par un point. Rejet automatique de la saisie accidentelle d’une deuxième virgule dans un nombre. Rejet de tous les caractères non numérique. Possibilité de limiter la saisie à un certain nombre de caractères. Possibilité d’interdire les nombres à virgules. Possibilité d’ajouter des limites mini et maxi. Cette routine intégrera mon programme CIBUS. A tester, en espérant qu’il n’y ait plus de bug ! Marc - Code:
-
LEFT 0,200 TOP 0,200 WIDTH 0,700 HEIGHT 0,320 COLOR 0, 150,180,150 FONT_NAME 0, "Arial" FONT_SIZE 0, 14
LABEL Mask LABEL Saisie LABEL Calcul_Affichage
DIM Entree$ DIM valeur DIM N DIM L DIM A$
Entree$="0"
GOSUB Mask
ON_CHANGE 1, Saisie
END
' ----------------------------------------------------------------------------
Saisie:
N=NUMBER_CHANGE a$=RIGHT$(TEXT$(N),1) IF a$="" THEN Entree$="0" : TEXT N, Entree$: GOSUB Calcul_Affichage : RETURN L=LEN(TEXT$(N)) IF A$ = "." OR A$ = "," and INSTR(LEFT$(TEXT$(n),L-1),".")<>0 THEN TEXT N, LEFT$(TEXT$(N),L-1) : CARET_POSITION N, L : RETURN IF a$="." or a$="," THEN TEXT N, LEFT$(TEXT$(N),L-1) + "." : CARET_POSITION N, L : Entree$ = text$(n): gosub Calcul_Affichage : RETURN IF ASC(a$)<48 or ASC(a$)>57 THEN TEXT N, LEFT$(TEXT$(N),L-1) : CARET_POSITION N, L : RETURN IF LEN(TEXT$(N))=2 AND LEFT$(TEXT$(N),1)="0" THEN Entree$ = A$ : TEXT n, Entree$ Entree$=LEFT$(TEXT$(N),6) : ' ===> le "6" correspond au nombre max de caractères autorisés <============================================= TEXT N, Entree$ L=LEN(TEXT$(N)):CARET_POSITION N, L GOSUB Calcul_Affichage
RETURN
' ---------------------------------------------------------------------------- Calcul_Affichage: valeur = val(Entree$) CAPTION 2, valeur RETURN
' --------------------------------------------------------------------------- Mask:
EDIT 1 LEFT 1, 100 TOP 1, 100 WIDTH 1, 85 HEIGHT 1, 30 TEXT 1, Entree$ BUTTON 2 LEFT 2, 499 TOP 2, 100 WIDTH 2, 87 HEIGHT 2, 32
ALPHA 3 LEFT 3, 100 TOP 3, 70 CAPTION 3, "Saisie" ALPHA 4 LEFT 4, 499 TOP 4, 70 CAPTION 4, "Contrôle"
return | |
|
Jean Claude
Nombre de messages : 5950 Age : 70 Localisation : 83 Var Date d'inscription : 07/05/2009
| Sujet: Re: Saisie en temps réel d'un EDIT Sam 7 Mar 2015 - 19:04 | |
| Je viens de tester rapidement, je dois quitter pour ce soir. Je n'ai pas réussi à mettre en défaut.
Demain ou ce soir, je te filerais une sub de saisie de nombre dans un edit avec mise en forme du résultat.
A+ | |
|