Bloquear caracteres en los Imput

Como indica el nombre del foro en el moveremos todos los temas de dudas que se resuelvan con exito .
Este foro no tendra permisos de escritura.
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

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...
buen ejemplo

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

#,###.##

Agotaras123 escribió:#,###.##
eso no funciona :hypno:

Thanks

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

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.

rafaxplayer escribió:"[1234567890]" con "%d" ya estaria correcto.
thank very much rafax ;) :friends:

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"

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

Lo unico malo es que limpia es el input completo en vez del valor no permitido

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.

Muchas Gracias lo probaré enseguida
No me funciona :) lo selecciona pero no lo borra

bueno te lo borra en cuanto escribes el siguiente carácter , luego lo mirare de afinar mas haber si puedo ;)

thanks

Si vaaa, muchas gracias, tambien me acabo de dar cuenta que no me deja poner decimales

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...