Page 1 of 1
INPUTMASK - ALFANUMERICO
Posted: Wed Apr 06, 2022 8:25 am
by SALINETAS24
Hola a todos
Esto es lo que tengo en la documentación...,
Code: Select all
InputMask String (Numeric Textbox):
9 Displays digits
$ Displays a dollar sign in place of a leading space
* Displays an asterisk in place of a leading space
. Specifies a decimal point position
, Specifies a comma position
InputMask String (Non-Numeric Textbox):
9 Digits
A Alphabetic Characters
! Converts an alphabetic character to uppercase
Pero que pasa cuando queremos crear una mascara para contener caratereres ALFANUMERICOS (aAbBcC...., 123...) y que tenga una determinada longitud. En Clipper creo recordar teniamos el "#" que nos permitia crear campos de una determinada longitud y con esas caracteristicas.
El problema es que cuando utilizo un TEXTBOX alfanumerico con MAXLENGTH 13, y cuyo dato será para introducir una clave, el resultado que obtengo no tiene una longitud de 13, tiene una longitud de los caracteres que he introducido por lo que tengo que estar rellenado los espacios.
¿no hay ninguna máscara en HMG..?
Gracias
He visto que ya se reporto en su dia, pero desconozco si posteriormente se realizo alguna aportación.
http://www.hmgforum.com/viewtopic.php?f ... RICO#p2607
Lo dicho, gracias a todos y vamos con una cervecita bien fresquita.
Re: INPUTMASK - ALFANUMERICO
Posted: Wed Apr 06, 2022 2:57 pm
by Claudio Ricardo
Hola Salinetas, Yo fijo el MaxLenght (a 13 en tu caso) y luego uso esta función:
Code: Select all
/////////////////////////////////////////////////////////////////////////////////////////////////////////////
// Función Validate () Comprueba si los caracteres de cCadena están validados por cChars (retorna .T.)
// Uso Validate (cName,"abcdefghijklmnñopqrstuvwxyz0123456789") Si cName = a-z y 0-9 retorna .T.
Function Validate (cCadena,cChars)
LOCAL cValid := .T.
LOCAL i
For i = 1 To Len (cCadena)
If ! Lower ( SubStr (cCadena,i,1)) $cChars
cValid := .F.
EndIf
Next
Return cValid
Se puede poner en un CodeBlock en OnChange para que sea como " Valid " en los Get de Cli**er
y lo termino con: cVar := Padl ( cVar, 13, "0") para rellenar con ceros (o lo que necesites) a la izquierda.
Re: INPUTMASK - ALFANUMERICO
Posted: Wed Apr 06, 2022 3:35 pm
by andyglezl
Con INPUTMASK "AAAAAAAAA9999" no te funciona ??
Re: INPUTMASK - ALFANUMERICO
Posted: Wed Apr 06, 2022 4:53 pm
by SALINETAS24
Hola Claudio,
Claudio Ricardo wrote: ↑Wed Apr 06, 2022 2:57 pm
Hola Salinetas, Yo fijo el MaxLenght (a 13 en tu caso) y luego uso esta función:
..../...[
Se puede poner en un CodeBlock en OnChange para que sea como " Valid " en los Get de Cli**er
y lo termino con: cVar := Padl ( cVar, 13, "0") para rellenar con ceros (o lo que necesites) a la izquierda.
Efectivamente la solución pasa por emplear una funcion, HMG carece de mascara para admitir cualquier tipo de caracter.
Hola Andy
andyglezl wrote: ↑Wed Apr 06, 2022 3:35 pm
Con INPUTMASK "AAAAAAAAA9999" no te funciona ??
A mi no me funciona, en el caso que tu indicas solo admite letras en las 9 primeras posiciones y numeros en las 4 ultimas, y yo quiero ponerlos en cualquier lugar.
En fin, seguiremos usando PAD.
Gracias por vuestra colaboración y vamos con una "serveseta" virtual.
Re: INPUTMASK - ALFANUMERICO
Posted: Wed Apr 06, 2022 7:55 pm
by arturoorta
Buenas tardes.
Yo tenía el mismo problema y modifiqué el código fuente de HMG para que acepte la "X" en INPUTMASK. Ahí te paso el programa modificado. Solo hay que recompilar las librerias HMG.
Se usa la "X" igual que en el Get de Clipper. Ejemplo INPUTMASK "!!!!999999XXX", esto es las primeras cuatro covertir a mayúscula, del 5 al 10 solo números y las tres últimas posiciones cualquier caracter. Espero te sirva. Saludos desde Chihuahua, México.
PDTA. ¿Podrán incluir esto en las siguientes revisiones de HMG? Solo es una sugerencia.
Re: INPUTMASK - ALFANUMERICO
Posted: Wed Apr 06, 2022 8:19 pm
by arturoorta
Ok. Ya revisé el problema que mencionan. Cuando lees el valor del Textbox siempre te quita los espacios sobrantes sin importarle el Maxlenght o InputMask. Por ejemplo:
Textbox oTxtBox Value Space(5) InputMask "!!!!!"
Si el usuario teclea "ABC" y hacemos lo siguiente:
cCode:=oWindow.oTxtBox.Value
cCode queda con el siguiente valor "ABC" eliminando los dos espacios restantes del valor original "ABC " y provocando que si hacemos una busqueda donde necesitamos que el valor sea exactamente igual, por ejemplo:
Select XDATA
DBSeek(cCode)
While cCode==XDATA->CODEFIELD .AND. !EoF()
Skip 1
Enddo
No funcione. Ya que "ABC" NO ES EXACTAMENTE IGUAL A "ABC ".
La solución sería modificar el código de TextBox para que no recorte los espacios sobrantes si hay un Maxlenght o un InputMask de por medio.
Esa es mi humilde opinión.
Re: INPUTMASK - ALFANUMERICO
Posted: Wed Apr 06, 2022 10:19 pm
by AUGE_OHR
hi,
you are right when use "=="
instead of
Code: Select all
While cCode==XDATA->CODEFIELD .AND. !EoF()
i would recommend to use
Code: Select all
While XDATA->CODEFIELD = cCode .AND. !EoF()
Re: INPUTMASK - ALFANUMERICO
Posted: Thu Apr 07, 2022 3:15 am
by andyglezl
SALINETAS24 wrote: ↑Wed Apr 06, 2022 4:53 pm
A mi no me funciona, en el caso que tu indicas solo admite letras en las 9 primeras posiciones y numeros en las 4 ultimas,
(Creo que así funciona el INPUTMASK)
y yo quiero ponerlos en cualquier lugar.
Simple TEXTBOX:
@ <nRow>, <nCol>
TEXTBOX <ControlName> OF <ParentWindowName> HEIGHT <nHeight> WIDTH <nWidth> VALUE <cValue> ;
MAXLENGTH <nInputLength> ON CHANGE Valida() ON LOSTFOCUS Valida() ON ENTER Valida()
:
:
:
Function Valida()
:
: Lo que quieras validar...
:
RETURN