Yo busque una en internet (creo que en
http://www.universalthread.com/ShowHeaderDownload.aspx) y
la modifique a mis necesidades:
_Screen.AddObject("oTextBoxNum", "lmTextBoxNum")
_Screen.oTextBoxNum.VISIBLE = .T.
DEFINE CLASS lmTextBoxNum AS TEXTBOX
ALIGNMENT = 1
VALUE = 0
FORMAT = "K"
SELECTEDBACKCOLOR = RGB(0,128,255)
cvalue = ""
NAME = "lmtextboxnum"
PROCEDURE setvalue
THIS.VALUE = VAL(THIS.cValue)
THIS.REFRESH()
ENDPROC
PROCEDURE KEYPRESS
LPARAMETERS nKeyCode, nShiftAltCtrl
IF THIS.READONLY
* If the control is read-only...
IF INLIST( nKeyCode, 13, 9, 15, 4, 19, 5, 24, 18, 3)
* ...then the ENTER, TAB, BACKTAB, RIGHT ARROW, LEFT ARROW,
* UP ARROW, DOWN ARROW, PGUP, and PGDN keys have default
behavior,
ELSE
* ...all other keys have no effect.
NODEFAULT
ENDIF INLIST( )
ELSE
DO CASE
CASE BETWEEN(nKeyCode, 48, 57)
* Digits 0 to 9
NODEFAULT
IF VAL(THIS.cValue + CHR(nKeyCode)) < 10 ^
(IIF(THIS.MAXLENGTH = 0, 9, THIS.MAXLENGTH))
THIS.cValue = THIS.cValue + CHR(nKeyCode)
THIS.SetValue()
ENDIF
CASE nKeyCode = 43
* + key
NODEFAULT
IF LEFT(THIS.cValue,1) = "-"
THIS.cValue = SUBSTR(THIS.cValue,2)
THIS.SetValue()
ENDIF
CASE nKeyCode = 45
* - key
NODEFAULT
IF LEFT( THIS.cValue,1) <> "-"
THIS.cValue = "-" + THIS.cValue
THIS.SetValue()
ENDIF
CASE nKeyCode = 46 OR nKeyCode = 44
* . Key ó , Key
NODEFAULT
THIS.cValue = THIS.cValue + SET("Point")
THIS.SetValue()
CASE INLIST( nKeyCode, 13, 9, 15, 4, 19, 5, 24, 18, 3)
* Enter, Tab, Backtab, Right Arrow, Left Arrow, Up Arrow,
Down Arrow,
* PgUp, and PgDn have default behavior.
CASE nKeyCode = 7
* Del
NODEFAULT
THIS.cValue = "0"
THIS.SetValue()
CASE nKeyCode = 127
* BackSpace
NODEFAULT
IF LEN(THIS.cValue) > 0
THIS.cValue = LEFT(THIS.cValue, LEN(THIS.cValue)-1)
THIS.SetValue()
ENDIF
OTHERWISE
* Ignore all other keys
NODEFAULT
ENDCASE
ENDIF THIS.READONLY
ENDPROC
PROCEDURE GOTFOCUS
DODEFAULT()
THIS.cValue = "0"
IF NOT EMPTY(THIS.FORMAT) AND ;
VARTYPE(THIS.FORMAT) = "C" AND ;
"K" $ THIS.FORMAT
THIS.SELSTART = 0
THIS.SELLENGTH = LEN(THIS.TEXT)
ENDIF
ENDPROC
PROCEDURE CLICK
IF NOT EMPTY(THIS.FORMAT) AND ;
VARTYPE(THIS.FORMAT) = "C" AND ;
"K" $ THIS.FORMAT
THIS.SELSTART = 0
THIS.SELLENGTH = LEN(THIS.TEXT)
ENDIF
ENDPROC
ENDDEFINE
Luis María Guayán
Tucumán, Argentina
_________________________
http://www.PortalFox.com
Nada corre como un zorro
_________________________