Evitar Letras En Textbox


Objetivo: Evitar Letras En Textbox
Buenas! realmente nose si es el metodo correcto, ni la forma de la q deberia hacerse, pero me funciona y de lujo

PUBLIC SUB Ttelefono_Change()
CInt(Ttelefono.Text) 'Convierte el numero en entero
CATCH
Ttelefono.Text = Mid$(Ttelefono.Text, 1, -1) 'Si no es un numero borra el caracter
STOP EVENT
END


De este sencillo metodo consigo que en mi textbox llamado Ttelefono no pueda escribir una letra, para en parte, asegurarme deq almenos se parezca a un numero de telefono spero q os sirva de ayuda

Objetivo: Re: Evitar Letras En Textbox
Hola
El evento change se ejecuta cuando tu control ya ha cambiado su contenido y ahora tienes que trabajar para quitarlo si no es adecuado.

Parece mas apropiado el evento keypress que se ejecuta cuando pulsas una tecla.

Pongamos que tu solo quieras números
sub textbox_keypress()
if isdigit(key.text) then ---> es numérico
...
endif


http://gambasdoc.org/help/cat/char?es

Si quieres anular la tecla puedes anular el evento (stop event) en cuyo caso no llega nada al control.

¡ojo! el keypress salta al pulsar una tecla (el keyrelease al soltarla). Ten cuidado con las pulsaciones que eliminas porque podrías impedir borrar un número mal puesto por ejemplo. Para evitar problemas de gui y ascii utiliza las constantes que corresponden a cada tecla en la clase key y así te funcionará bien.

Perfil MP  
Objetivo: Re: Evitar Letras En Textbox
si, veo q tu metodo es mas optimizado, en cualquier caso, ambos funcionan :P, cambiaré al tuyo en la siguiente compilacion que haga, para optimizar el tema

Grax!

Objetivo: Re: Evitar Letras En Textbox
Conceptualmente debemos pensar que el evento keypress como su nombre indica está pensado para detectar pulsaciones de teclas y actuar conforme a eso. Por ello cuando quieres permitir algunas teclas y otras no lo mas lógico es recurrir a él.

El evento change está mas pensado para actuar cuando el contenido cambia. Por ejemplo yo tengo hecho un gridview que muestra el contenido de una tabla. Según vas escribiendo un nombre en un textbox en el gridview se van filtrando solo los registros que coinciden con lo escrito. Es decir, cuando el textbox cambia, se realiza una nueva búsqueda y se muestra el resultado


Perfil MP  
Objetivo: Re: Evitar Letras En Textbox
hehehe ahora q lo comentas, podrias poner ese ejemplo? seria la caña, tengo echo un pequeño buscador pero muestra los resultados totales, seria genial q fuese filtrando menuda idea! ... desde luego, cuanto mas tele veo, menos imaginacion desarrollo.......

Objetivo: Re: Evitar Letras En Textbox
Pues es muy sencillo.

Imagina un gridview o cualquier otro control que muestra el contenido de una tabla.
Ahora imagina un textbox en el que quieres escribir y que según vayas escribiendo se vaya filtrando.

Por abreviar pensemos en una conexión activa.

sub textbox_change
Dim Rs as result

if textbox.text then ---> que haga esto si en el textbox hay algo
Rs=Cn.exec("select * from tabla where campo like '" & textbox.text & "%' order by lo_que_sea")
else
Rs=Cn.exec("select * from tabla order by lo_que_sea")
endif

LlenarGrid(Rs) ---> procedimiento que llena el gridview
end sub


Ese evento tal como está puesto filtra todo aquello que EMPIECE POR lo que has escrito en el textbos. También podemos hacer que en vez de EMPEZAR POR filtre los registros que CONTENGAN lo que has escrito.
sub textbox_change
Dim Rs as result

if textbox then ---> que haga esto si en el textbox hay algo
Rs=Cn.exec("select * from tabla where campo like '%" & textbox.text & "%' order by lo_que_sea")
else
Rs=Cn.exec("select * from tabla order by lo_que_sea")
endif

LlenarGrid(Rs) ---> procedimiento que llena el gridview
end sub
En este caso según tu vas escribiendo algo en el textbos se van filtrando en el gridview los registros cuyo campo contiene lo que has escrito.

En mysql el % es un comodín para varios caracteres. No se cual es en sqlite quizá sea el mismo o no, pero en cualquier caso se entiende lo que digo.

Otra posibilidad que funciona igual es la propiedad filter del datasource por ejemplo.

Otro caso que te propongo
El caso anterior no es una buena solución cuando hay muchos registros porque tarda en generar el result (es cuestión de probar), pero lo que si es eficiente es en vez de generar result nuevos buscar en una tabla.

Osea que tu tienes un grid con un montón de datos y tienes un textbox y cuando escribes algo te busca y se posiciona en el primer registro que cumple esa condición. Yo suelo poner un botón adicional que es para buscar siguiente y lo que hace es buscar el siguiente registro que cumpla esa misma condición.


última edición por soplo el Viernes, 25 Septiembre 2009, 18:37; editado 1 vez
Perfil MP  
Objetivo: Re: Evitar Letras En Textbox
ahahhaha llevaba desde q te contesté probando cosillas, pero me petaba lo q hacia gracias x la solucion!

sobre el sql si q lo entiendo vengo de php+mysql x eso tengo mas de un problema al seleccionar cosas en tiempo real, no me puse con Ajax :P.

sobre lo q me propones.... voy aver si termino de aclararme en "mostrar datos" q para guardar en mysql no tengo problemas, pero para mostrar.... mas de uno :s


Página 1 de 1


  
No puede crear mensajes
No puede responder temas
No puede editar sus mensajes
No puede borrar sus mensajes
No puede votar en encuestas
No puede adjuntar archivos
Puede descargar archivos
No puede publicar eventos en el calendario

   

Está utilizando la versión (Lo-Fi). Para ver la versión completa del foro, haga clic aquí.

Powered by Icy Phoenix based on phpBB
Design by DiDiDaDo

Página generada en:: 0.2181s (PHP: -59% SQL: 159%)
Consultas SQL: 24 - Debug off - GZIP Activado