Textbox numérique

Résolu
jee0404 Messages postés 131 Date d'inscription jeudi 21 octobre 2004 Statut Membre Dernière intervention 27 octobre 2009 - 19 févr. 2007 à 20:56
jee0404 Messages postés 131 Date d'inscription jeudi 21 octobre 2004 Statut Membre Dernière intervention 27 octobre 2009 - 22 févr. 2007 à 15:22
bonjour,

 J,ai un problème avec un textbox numérique. C'est pour la rentré de chiffre dans un textbox. Le problème c'est que je met l'inputmask a '99,999.99' et quand je le fait partir ,il m'affiche '0.00' dans le textbox parce que ma variable qui est dans le textbox est initialisé a 0. Quand j'entre 25 dans le textbox exemple " 25 0.00" et je fait enter , le contenu de la virable apres est de "25" , c'est qui est parfais, mais quand j'utilise une autre touche pour sortie et l'entregistrer comme pgdw ou pgup , la quand j'entre 25 ex : "25 0.00" la il me sort 250 ! ,comment faire pour que le textbox réagisse de la même façon que quand on pése sur ENTER, j'ai essayer de le sélectionner au complet ,mais je peut pas faire ca .  Pouvez-vous m,aider ? 

PS je vous envoye le code de mon textbox 
DEFINE CLASS

CLSTXTBOX AS TEXTBOXTOP

= (35*CSTM)

LEFT = (216*CSTM)

WIDTH = (55*CSTM)

HEIGHT = (18*CSTM)

VALUE = 0

ControlSource = CODE2

RightToLeft = .F.

InputMask = '99,99.99' 

PROCEDURE KEYPRESSLPARAMETERS

NKEYCODE, NSHIFTALTCTRL*!* NODEFAULT
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

ENDIF

ENDPROC

PROCEDURE LostFocus

STORE this

.VALUE TO CODE2

MESSAGEBOX("PERDU LE FOCUS")

MESSAGEBOX(CODE2)

ENDPROC ENDDEFINE

                                                                                                                 Merci d'avance
  

 

2 réponses

Mike Gagnon Messages postés 381 Date d'inscription vendredi 15 octobre 2004 Statut Membre Dernière intervention 24 octobre 2013 2
22 févr. 2007 à 12:31
Voici un classe que j'utilise, roule ce qui suit dans un prg

o = CREATEOBJECT("form")
o.addobject("txtnumber2","txtnumber2")
o.txtnumber2.visible = .t.
o.show(1)
DEFINE CLASS txtnumber2 AS textbox
    Alignment = 3
    Value = 0
    InputMask = "9,999,999.99"
    SelectOnEntry = .T.
    Name = "txtnumber2"
    csofar = .F.
    ndecimal = .F.

    PROCEDURE setvalue
        THIS.Value = VAL(THIS.cSoFar)
        THIS.Refresh()
    ENDPROC

    PROCEDURE inputmask_assign
        LPARAMETERS vNewVal
        wait window "m.vNewVal" +m.vNewVal
        wait window "this.inputmask" + this.inputmask
        THIS.InputMask = m.vNewVal
        THIS.SetValue()
    ENDPROC

    PROCEDURE setdecimal
    ENDPROC

    PROCEDURE LostFocus
        rele llsd,lld
        set decimals to
    ENDPROC

    PROCEDURE KeyPress
        Lparameters nKeyCode, nShiftAltCtrl

        Do case
        Case (nKeyCode=46 or (nKeyCode>=48 and nKeyCode<=57)) and len(this.cSoFar)< llsd + 1
            Nodefault
            This.cSoFar=this.cSoFar+chr(nKeyCode)
            This.setvalue
        If len(this.csofar)=llsd
            ?? chr(7)
        Endi
        Case nKeyCode=46 and len(this.cSoFar)= llsd
            Nodefault
            This.cSoFar=this.cSoFar+chr(nKeyCode)
            This.setvalue
        Case nKeyCode>=48 and nKeyCode<=57 and len(this.cSoFar)<lld and len(this.cSoFar)>llsd
            Nodefault
            This.cSoFar=this.cSoFar+chr(nKeyCode)
            This.setvalue
            If len(this.cSoFar)=lld
                ?? chr(7)
            Endi
        Case nKeyCode=127 and len(this.cSoFar)#1
            Nodefault
            This.cSoFar=substr(this.cSoFar,1,(len(this.cSoFar)-1))
            This.setvalue
        Case nKeyCode=7
                Nodefault
            This.cSoFar="0"
            This.setvalue
        Case len(this.cSoFar)=lld
            nodefault
            ?? chr(7)
        Case nKeyCode = 43
            Nodefault
            If LEFT(THIS.cSoFar,1) = "-"
                This.cSoFar = SUBSTR(THIS.cSoFar,2)
                This.SetValue()
            Endif
        Case nKeyCode = 45
        * - key
            Nodefault
            If LEFT(THIS.cSoFar,1) <> "-"
                This.cSoFar = "-" + THIS.cSoFar
                This.SetValue()
            Endif
        Case nKeyCode=9 or nKeyCode=15 or nKeyCode=13 or nKeyCode=24 or nKeyCode=5

        Otherwise
            Nodefault
        Endc
    ENDPROC

    PROCEDURE GotFocus
        DoDefault()
        public llsd,lld
        This.csofar="0"

        cnt=1
        lcommas=0
        do while cnt<len(this.inputmask)
        if subs(this.inputmask,cnt,1)=","
        lcommas=lcommas+1
        endi
        cnt=cnt+1
        endd
        if lcommas=2
        llsd=rat(".",this.inputmask)-2
        lld=len(this.inputmask)-1
        endi
        if lcommas=1
        llsd=rat(".",this.inputmask)-1
        lld=len(this.inputmask)
        endi
        if lcommas=0
        llsd=rat(".",this.inputmask)
        lld=len(this.inputmask)+1
        endi

        ldec=len(this.inputmask)-rat(".",this.inputmask)
        set decimals to ldec

    ENDPROC

ENDDEFINE

Mike Gagnon
3
jee0404 Messages postés 131 Date d'inscription jeudi 21 octobre 2004 Statut Membre Dernière intervention 27 octobre 2009
22 févr. 2007 à 15:22
Merci c'est une bonne idee , une bonne alternative

 
0
Rejoignez-nous