Necesito ingresar solamente valores numricos en un textfield

Buen da

Tengo una ventana con un textfield donde necesito ingresar solamente valore numricos como por ejemplo 1475.98, puse en la propiedad format = ##,###.00, pero el comportamiento del texfield no es el que espero ya que tengo que llenar todos los digitos tanto de enteros como decimales para que se vea bien en caso contrario si ingreso un solo decimal este queda as 14.6 o peor aun si ingreso un solo numero este queda as: 7

Que propiedad debo configurar para que el usuario pueda escribir los valores necesario y estos se vean correctamente (14.60 y 7.00)?

Saludos.
Mauricio

Hola Mauricio,

Si slo quieres especificar el formato con que pongas ##,###.00 debera funcionar, a no ser que haya algn tema de configuracin local. Prueba a utiliza Str en vez de Format. La diferencia es que mientras Format utiliza unos separadores concretos para miles y decimales, Str respeta la configuracin local.

Si no es eso podras poner el cdigo que ests usando y en qu evento est?

Si adems de darle un formato concreto quieres filtrar los caracteres que el usuario teclea (para no dejarle introducir letras, por ejemplo) habra que interceptar los caracteres uno a uno y comprobar si son vlidos.

Julen

Hola Julen.

Gracias por la ayuda.

El la configuracin regional de w7 tengo como separador de miles “,” y de decimales “.”
No tengo ningn cdigo solamente en la propiedad mask del textfield tenia ###,###.00, al no tener resultados lo puse en la propiedad format, y por ultimo en las 2 propiedades pero no resulto, consultando en otro foro me dieron est respuesta.

en el mtodo KeyDown

dim n as Integer

n=key.Asc

Select case n

Case 1,4,8,9,127,46,48 to 57
return false
case else
return true
end Select

en el metodo LostFocus
me.Text=CStr(Format(Val(me.Text),"##,###.00"))

y funciono.

Sabes si se puede clasear el textfield con este cdigo para que a medida que se necesite trabajar con nmeros se utilice esta nueva clase.

Saludos.
Mauricio

Ah, nunca he trabajado con mask, pensaba que estabas haciendo lo que hace el cdigo que has puesto en tu respuesta (la ltima lnea).

Respondindote, s se puede. Quieres tener una subclass con ese cdigo, verdad? Si quieres que adems el evento KeyDown de la subclass se pueda seguir programando en las instancias de la subclass tienes que aadir un nuevo event KeyDown y utilizar RaiseEvent en el keydown de la subclass (no de la instancias).

Mi experiencia en programacin /xojo es limitada y adems no lo tengo instalado en el ordenador en el que estoy, por lo que no te puedo dar ms detalles ahora mismo. Si con lo que te he dicho te vale, perfecto. Sino, busca en el manual de usuario subclassing (o algo as), que seguro que est perfectamente explicado. Adems tienes los weminars en la pgina de xojo, y es muy probable que alguno de ellos explique como hacer subclases.

Un saludo,

Julen

Hola Julen

Gracias por la informacin, ya me da un punto de partida.

Yo programo en Visual FoxPro 9.0 y ah tengo mis libreras y por ejemplo tengo claseado un texbox para ingresar datos en formato hora, lo nico que hago es arrastra la clase al formulario y listo el comportamiento es heredado, espero se pueda hacer algo semejante en Xojo.

Si puedes darme un poco ms de informacin te lo agradecera.

Saludos.
Mauricio

Mauricio, ¿has buscado en la documentación?

http://41160df63757fc043cfd-66287f38a83954e31a54d1dbe33e0650.r4.cf2.rackcdn.com/Documentation/EN-PDF/UserGuide-Fundamentals.pdf

Julen

Hola

Trata con este

If Not IsNumeric(Textfield1.Text) then
TextField1.Text = “”
end if

Olvidaba

Ponlo nel Evento Textchange de la Textfield1

Saludos

Y al final con el format defines que tipo de numero quieres ver…

Saludos

in textfield keydown event

select case asc(key)
case 48,49,50,51,52,53,54,55,56,57,44,46 // 44 is comma and 46 is dot
return true
case else
me.text = left(me.text, len(me.text) - 1)
return false // invoke beep
end select