Limitar input por caracteres y no por espacio
Posted: Tue Feb 02, 2021 10:32 pm
Buenas tardes,
Soy Nicolás, hijo de Pedro y estoy haciendo continuidad de sus sistemas, y pregunto a traves de su cuenta hasta que habiliten la mia.
Una gran duda existencial que tuve siempre, es el por qué se debe delimetrar el GET a traves de espacios en blancos y no simplemente ponerle un limite de caracteres. Ya que al generar que la variable tenga, por ejemplo, 20 espacios en blanco, hace que siempre queden espacios al final del input. Los usuarios en otras aplicaciones, cuando quieren editar, hacen click en cualquier parte del final del input y lo deberia llevar a la ultima letra, en nuestro caso lo lleva a un espacio en mitad del input en vez de la ultima letra (que en realidad, el espacio es el ultimo caracter).
Esto genera molestias en el UX.
Adjunto mi codigo ejemplo:
Estuve investigando tanto aqui, como en los docs de Harbour y no encuentro nada.
Solo encontre algo de LimitText( -1 ) para dejarlo libre, pero no me funciona. Me dice "No exported method".
Lo uso de la siguiente manera:
Si tienen una solución de delimetrar el input sin tener que usar espacios en blanco, se lo agradeceria muchisimo.
Nicolás Lerda.
Soy Nicolás, hijo de Pedro y estoy haciendo continuidad de sus sistemas, y pregunto a traves de su cuenta hasta que habiliten la mia.
Una gran duda existencial que tuve siempre, es el por qué se debe delimetrar el GET a traves de espacios en blancos y no simplemente ponerle un limite de caracteres. Ya que al generar que la variable tenga, por ejemplo, 20 espacios en blanco, hace que siempre queden espacios al final del input. Los usuarios en otras aplicaciones, cuando quieren editar, hacen click en cualquier parte del final del input y lo deberia llevar a la ultima letra, en nuestro caso lo lleva a un espacio en mitad del input en vez de la ultima letra (que en realidad, el espacio es el ultimo caracter).
Esto genera molestias en el UX.
Adjunto mi codigo ejemplo:
Code: Select all
vnum[1]:=space(30)
vnum[2]:=space(30)
vnum[3]:=space(3)
vnum[4]:=space(30)
vnum[5]:=space(30)
// Defino un alias al recurso de la pantalla
DEFINE DIALOG d_loc2 RESOURCE "dl_apocap"
//Redefino fuentes y colores
redefine say id 4005 of d_loc2 color METRO_GRIS7A, METRO_GRIS4 font oFuenteL
redefine say gnum[6] prompt vnum[6] id 4001 of d_loc2 color METRO_GRIS4 font oFuenteM update
// Asigno variables a los inputs.
redefine GET gnum[1] var vnum[1] id 4023 of d_loc2 picture "@!" color CLR_3 update
redefine GET gnum[2] var vnum[2] id 4025 of d_loc2 picture "@!" color CLR_3 update
redefine GET gnum[3] var hvnum["moneda"] id 4011 of d_loc2 picture "@!" color CLR_3 update
redefine GET gnum[4] var hvnum["ingreso"] id 4017 of d_loc2 picture "@e 9,999,999.9999" color CLR_3 update
redefine GET gnum[5] var vnum[5] id 4002 of d_loc2 picture "@!" color CLR_3 update
Solo encontre algo de LimitText( -1 ) para dejarlo libre, pero no me funciona. Me dice "No exported method".
Lo uso de la siguiente manera:
Code: Select all
// Despues del redefine GET. Probe primero uno, y despues el otro. En el primero no genera nada, en el segundo da el error de N.E.M.
gnum[5]:LimitText( -1 )
vnum[5]:LimitText( -1 )
Nicolás Lerda.