Página 1 de 2

Bloquear caracteres en los Imput

Publicado: 11 Abr 2013 08:23
por dimatiguz
Buenas, escribo porque tengo un problemita que no he podido resolver y es el siguiente:
estoy haciendo una aplicación para hacer cálculos de una materia en especifica para la universidad y quisiera limitar los imput a que solo se le pudiera introducir números, es decir que no deje introducir letras ni símbolos, solamente permita numeros y punto para los decimales; es decir que también bloquee la coma (se le puede colocar un mensaje de carácter no permitido) Gracias de antemano

Publicado: 11 Abr 2013 11:11
por Ceone
Existe un ejemplo que solo permite numeros pero no puntos... :sorry: :sorry: :sorry:

ON GLOBAL:
function InputSoloNumeros(HwndInput)
Args1  = string.format("%d,%d", HwndInput, -16)
GetWinLong = DLL.CallFunction("user32.dll", "GetWindowLongA", Args1, DLL_RETURN_TYPE_LONG, DLL_CALL_STDCALL);
Args2  = string.format("%d,%d,%d", HwndInput, -16, GetWinLong + 8192)
DLL.CallFunction("user32.dll", "SetWindowLongA", Args2, DLL_RETURN_TYPE_LONG, DLL_CALL_STDCALL);
end
ON SHOW:
InputSoloNumeros((Input.GetProperties("Input1").WindowHandle))
HIDE: ON
Hidebb Message Hidden Description


Yo asi a voz de pronto no lo se modificar lo mismo Pabloko, Rafax o el creador de esta función CoCo_InC pueden pero yo y USER32 no somos muy amigos, he pensado en alguna DLL usando c# pero el problema que al modificar un input siempre vuelve al primer dígito, se me ocurre una manera de hacer que no haga eso pero es ultra chapucera, que es fijando las dimensiones y posición y haciendo click al final del objecto cuando falle, pero es un poco chapuza... lamento no poder serte de mas ayuda...

Re: Bloquear caracteres en los Imput

Publicado: 11 Abr 2013 12:07
por sattel
buen ejemplo

Publicado: 12 Abr 2013 00:54
por dimatiguz
Muchas Gracias por responder, yo tengo un tiempito intentando y nada, en las opciones de mascara de los input se pueden poner ##### pero no deja introducir decimales, cualquier si logran hacer algo me avisan, porque por cuestion de estetica se vería muy bien con las letras bloqueadas o que pudieras bloquear los caracteres que quisieras, muchas gracias nuevamente, saludos

Publicado: 12 Abr 2013 02:33
por Agotaras123
#,###.##

Publicado: 12 Abr 2013 04:41
por dimatiguz
Agotaras123 escribió:#,###.##
eso no funciona :hypno:

Publicado: 12 Abr 2013 07:45
por tam
Thanks

Publicado: 13 Abr 2013 13:30
por abood1987
Very good Ceone .

Or by this code in On Char :
function IsNumeric(sValueIn)--Worm Function --I think this is a sagacity in trick!
	if String.Length(string.gsub(sValueIn, "[1234567890]", "")) == 0 then
		return true
	else
		return false
	end
end
bTF =IsNumeric(Input.GetText("Input1"));
if bTF then
	Dialog.Message("", "true = it is numerical");
	else
	Dialog.Message("", "false = it is not numerical");
end

Publicado: 13 Abr 2013 14:11
por rafaxplayer
abood1987 escribió:Very good Ceone .

Or by this code in On Char :
function IsNumeric(sValueIn)--Worm Function --I think this is a sagacity in trick!
	if String.Length(string.gsub(sValueIn, "[1234567890]", "")) == 0 then
		return true
	else
		return false
	end
end
bTF =IsNumeric(Input.GetText("Input1"));
if bTF then
	Dialog.Message("", "true = it is numerical");
	else
	Dialog.Message("", "false = it is not numerical");
end
Esta muy bien abood , pero en vez del conjunto de patrones "[1234567890]" con "%d" ya estaria correcto.

Publicado: 13 Abr 2013 17:42
por abood1987
rafaxplayer escribió:"[1234567890]" con "%d" ya estaria correcto.
thank very much rafax ;) :friends:

Publicado: 13 Abr 2013 20:07
por abood1987
Hello again :friends:


you Can also do that by MemoryEx Action Plugin v 2.1.0.0 Look at this topic to downLoad viewtopic.php?f=15&t=1715

this is an example apz :

HIDE: ON
Hidebb Message Hidden Description


Note : First download MemoryEx Action Plugin v 2.1.0.0 and put it in this path
Offtopic:
"C:\Program Files\AutoPlay Media Studio 8\Plugins\Actions"

Publicado: 14 Abr 2013 18:17
por dimatiguz
Muchísimas Gracias a todos me funcionó excelente... al final lo necesitaba así:
function IsNumeric(sValueIn)--Worm Function --I think this is a sagacity in trick!
        if String.Length(string.gsub(sValueIn, "[1234567890.]", "")) == 0 then
                return true
        else
                return false
        end
end
bTF =IsNumeric(Input.GetText("Input1"));
if bTF then
        
        else
        Dialog.Message("Error", "Introduzca un valor numerico valido");
      
   Input.SetText("Input1", "");

end

Publicado: 14 Abr 2013 19:42
por dimatiguz
Lo unico malo es que limpia es el input completo en vez del valor no permitido

Publicado: 14 Abr 2013 21:05
por rafaxplayer
Bueno yo he estado trasteando un ratillo y al final he sacado esto:
function IsNumeric(char)
      local b;
        for x = 1,10 do
	        if( String.Char(char) == tostring(x) or String.Char(char) == "0")then-- si el char es numerico 1234567890
	               b =true;
	               break; --rompemos bucle
	               
	        else-- si no lo es retrona falso 
	               b=false;
	           
	        end
        end
        return b;--retorno bool
end


function deletelastchar(objInput)-- funcion para borrar el ultimo caracter del input, menudo royo hay que montar en AMS pa esta tarea de mierda :P
	s = Input.GetText(objInput);-- gettext
	Input.SetSelection(objInput,s:len(),-1);-- selccionamos ultimo caracter
	Input.Delete(objInput);-- delete...
end


b=IsNumeric(e_Char);-- comprobamos si e_char es nuemrico o no.

if  b == false then--Si es falso el retorno de IsNumeric , el valor no es nuemrico

	deletelastchar(this);-- eliminamos ultimo caracter.
	
end
Con este codigo en el evento On char del input , conseguimos que cuando el carácter no sea numérico simplemente lo borre , si queréis dar algún mensaje solo tenéis que usar el retorno de la funcion isnumeric para filtrar.

Ahora se me ocurre que a lo mejor copiando bloque de texto no funcione correctamente, pero tecleando caracteres uno a uno si ;P un saludote.

Publicado: 14 Abr 2013 22:35
por dimatiguz
Muchas Gracias lo probaré enseguida

Re: Bloquear caracteres en los Imput

Publicado: 14 Abr 2013 23:42
por dimatiguz
No me funciona :) lo selecciona pero no lo borra

Publicado: 15 Abr 2013 06:36
por rafaxplayer
bueno te lo borra en cuanto escribes el siguiente carácter , luego lo mirare de afinar mas haber si puedo ;)

Publicado: 15 Abr 2013 06:50
por bariza-dz
thanks

Publicado: 15 Abr 2013 08:10
por dimatiguz
Si vaaa, muchas gracias, tambien me acabo de dar cuenta que no me deja poner decimales

Publicado: 16 Abr 2013 09:22
por Ceone
dimatiguz escribió:Si vaaa, muchas gracias, tambien me acabo de dar cuenta que no me deja poner decimales
si.... ya... en mi respuesta lo pongo bien claro, kizas usando el plugin Memory se podria hacer algo... seria cuestión de mirarlo...