Textbox numérique

Résolu
tmcuh Messages postés 458 Date d'inscription dimanche 22 décembre 2002 Statut Membre Dernière intervention 18 avril 2009 - 11 avril 2005 à 10:52
jee0404 Messages postés 131 Date d'inscription jeudi 21 octobre 2004 Statut Membre Dernière intervention 27 octobre 2009 - 20 févr. 2007 à 16:38
Bonjour je suis débutant en fox et j'aurais aimé connaitre la technique
pour rendre une textbox uniquement numérique et si possible pour une
autre en format date (masque possible?).

Par avance merci

15 réponses

Mike Gagnon Messages postés 381 Date d'inscription vendredi 15 octobre 2004 Statut Membre Dernière intervention 24 octobre 2013 2
11 avril 2005 à 12:01
Question 1 (numérique).


Dans le inputMask = 999999


Question 2 (Date)


Dans le format met un D

Mike Gagnon
3
calenge Messages postés 6 Date d'inscription vendredi 19 mars 2004 Statut Membre Dernière intervention 3 mai 2005
2 mai 2005 à 16:36
je poursuis avec une question semblable: comment obliger la saisie d'une zone qui commencerait par ABCD ?

Si on met ABCD!!!!! dans inputmask, le A est interprété
comme "n'importe quel caractère alpha", puis BCD sont interprétés
comme... BCD



Merci de vos réponses



Gilles Calenge
0
Mike Gagnon Messages postés 381 Date d'inscription vendredi 15 octobre 2004 Statut Membre Dernière intervention 24 octobre 2013 2
2 mai 2005 à 18:19
Dans l'init du textbox met:

this.Value = 'ABCD'


this.SelStart =4

Mike Gagnon
0
calenge Messages postés 6 Date d'inscription vendredi 19 mars 2004 Statut Membre Dernière intervention 3 mai 2005
3 mai 2005 à 09:33
certes, mais ça n'empêche pas l'utilisateur d'effacer mon ABCD et de taper autre chose...



GC
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Mike Gagnon Messages postés 381 Date d'inscription vendredi 15 octobre 2004 Statut Membre Dernière intervention 24 octobre 2013 2
3 mai 2005 à 11:42
Alors met la valeur à maintenir dans un autre textbox readonly, et enregistre les deux valeurs en sauvegardant.

Mike Gagnon
0
calenge Messages postés 6 Date d'inscription vendredi 19 mars 2004 Statut Membre Dernière intervention 3 mai 2005
3 mai 2005 à 11:44
c'est ce que je vais faire. C'est pas très joli, mais tant pis.

Merci pour ton aide



GC
0
Mike Gagnon Messages postés 381 Date d'inscription vendredi 15 octobre 2004 Statut Membre Dernière intervention 24 octobre 2013 2
3 mai 2005 à 12:05
Ou bien met ceci dans le Keypress event du textbox (qui va empecher l'utilsateur de reculer)


IF this.SelStart < 5


this.SelStart=5


ENDIF

Ou bien change d'utlisateur ;-)

Mike Gagnon
0
michelatoutfox Messages postés 828 Date d'inscription mardi 5 octobre 2004 Statut Membre Dernière intervention 7 mai 2013 1
3 mai 2005 à 19:37
Calenge,

ta question recouvre un problème de conception de ta saisie: si tous les utilisateurs doivent saisir dans ce textbox une chaine de caractère commençant toujours par "ABCD", alors cette sous-chaine "ABCD" ne doit pas être considérée comme une varaible, donc ne doit pas figurer dans la zone de saisie, ni être stockée dans les données...
Le "pas très joli" est en fait le plus cohérent, et le plus économique en matière de data
0
jee0404 Messages postés 131 Date d'inscription jeudi 21 octobre 2004 Statut Membre Dernière intervention 27 octobre 2009
19 févr. 2007 à 19:18
excuse moi ,

     a propos de texbox numéric , j'ai un problème de saisie avec les textbox numérique. quand par exemple ne mets le inputmask a  = "99,999.99" et que l'utilisateur rendre 23 dans un textbox qui est initialisé a 0 . et le textbox rentre dans la variable CODE2  la valeur  230 au lieu de marqué 23 comment je peut faire pour évité ce problème ?
voila un exemple de code de texbox

DEFINE CLASS

CLSTXTBOX AS TEXTBOXTOP

= (35*CSTM)

LEFT = (216*CSTM)

WIDTH = (55*CSTM)

HEIGHT = (18*CSTM)

VALUE = CODE2

InputMask = '99,999.99'

PROCEDURE KEYPRESSLPARAMETERS

NKEYCODE, NSHIFTALTCTRL
IF NKEYCODE 13 && .or. NKEYCODE 3 .OR. NKEYCODE = 18

CLEAR events

STORE this

.VALUE TO CODE2

ENDIF if

NKEYCODE = 27

CLEAR EVENTSENDIF

IF
NKEYCODE 3 .OR. NKEYCODE 18

CLEAR EVENTSSTORE THIS

.Value TO CODE2

ENDIFENDPROC

PROCEDURE LostFocus

STORE this

.VALUE TO CODE2

MESSAGEBOX("PERDU LE FOCUS")

MESSAGEBOX(CODE2)

ENDPROC ENDDEFINE

j'ai essayer de controler avec le lostfocus , mais cela marche juste avec le ENTER et pas avec les autre commandes !

                                                                                 Merci d'avance

 
0
tmcuh Messages postés 458 Date d'inscription dimanche 22 décembre 2002 Statut Membre Dernière intervention 18 avril 2009
20 févr. 2007 à 09:12
 Je doute que le caractère "," et le "." font bon ménage...
De plus tu te complique la vie. Tu peux récupérer la valeur de ton textbox lors de l'évènement "valid", qui va valider ou invalider la valeur contenu dans le textbox. Et ainsi ne pas passer par des autres évènements qui récupère et reécrase derrière... qui n'est jamais très sain dans le code.
DEFINE CLASS CLSTXTBOX AS TEXTBOX
....
PROCEDURE VALID

      STORE this.VALUE TO CODE2
ENDPROC

Si tu veux pouvoir entrer des nombres à virgules, met plutôt un masque comme "999 999.99"

Amicalement TMCUH
0
jee0404 Messages postés 131 Date d'inscription jeudi 21 octobre 2004 Statut Membre Dernière intervention 27 octobre 2009
20 févr. 2007 à 15:15
merci pour ta réponse, j'apprécie, mais ce que je voulais savoir c,est qu'il apparaît au départ dans le textbox le chiffre "0.00" et quand je met le nombre 25 ,  il fait "25 0.00" et quand je fait pgdn ou PGUP , garde le 0  ,donc ca fait 250 , mais quand je pése sur enter, il écrase le 0 et ca fait 25. Je voudrais savoir comment je pourrais caller la procédure pour qu'Il fasse tout le temps comme le ENTER ?
PS pour sélectionner le contenu j'y ais pensé mais mes boss ne veut pas de même

 
0
tmcuh Messages postés 458 Date d'inscription dimanche 22 décembre 2002 Statut Membre Dernière intervention 18 avril 2009
20 févr. 2007 à 15:31
Il y a un problème de sélection. En fait ton champs à une position imaginons 10 caractères, ton masque lui en possède 6 (par exemple), ce qu'il fait qu'il reste 4 caractères vide. Lorsque tu va arriver dans ce controle, il va commencer depuis le début ce qui pourrait se représenter par "       0.00", lorsque tu va entrer une valeur tu va te retrouver au début du controle --> "25    0.00", tu as donc le chiffre qui passe à 250.
Je te conseil de passer par un selectonentry = .T. sur ton controle; ainsi dès qu'on arrive dedans, il va selectionner pour écraser la valeur. Tu aura donc toujours la valeur entrer et non plus la valeur de départ qui t'ennuie tant.

C'est une façon élégante je trouve. Maintenant si tu ne peux pas passer par un selectonentry, dans ce cas tu dois tester en entrant dans ta textbox (event gotfocus) si la valeur dedans est vide (if(empty(val(this.value)) alors il va mettre la valeur à blanc ; this.value = "" .... ton zéro disparait.
Tu devra procédé bien sur à une opération inverse si tu sors de la cellule sans l'avoir remplie (event lostfocus ... avec this.value = 0.0)
Le resultat est moins beau, à moins de le travailler un peu.

Amicalement TMCUH
0
jee0404 Messages postés 131 Date d'inscription jeudi 21 octobre 2004 Statut Membre Dernière intervention 27 octobre 2009
20 févr. 2007 à 16:21
merci pour l'attention , c'est une bonne idée de cleaner le contenue quand il prend son focus , mais si j'utilise  this.value = "" , ca rend le textbox comme une string et non comme un numéric .

La raison pourquoi il ne veut pas utiliser le selectonentry c'est parce qu'il le perd quand on click dedans et ca peut fausser le résultat . j'ai essaier de le refaire selectionner avec l'évenement click , mais sans résultat apparant.

tu connaitrait tu un moyen de voir s'il le zéros des entiers au départ n'a pas été touché ? et de pouvoir l'otter apres la saisie ?

 
0
tmcuh Messages postés 458 Date d'inscription dimanche 22 décembre 2002 Statut Membre Dernière intervention 18 avril 2009
20 févr. 2007 à 16:34
dans l'event Click()

this



.
SelStart
= 1

this



.
SelLength
=
LEN
(
STR
(
this
.
Value
))



Amicalement TMCUH
0
jee0404 Messages postés 131 Date d'inscription jeudi 21 octobre 2004 Statut Membre Dernière intervention 27 octobre 2009
20 févr. 2007 à 16:38
merci , ca va surement plaire a mes patrons , je te remercie beaucoup

 
0
Rejoignez-nous