Foros del Web » Programación para mayores de 30 ;) » Programación General »

Como Impedir que escriban Letras, solo Numeros en un Text ?

Estas en el tema de Como Impedir que escriban Letras, solo Numeros en un Text ? en el foro de Programación General en Foros del Web. Como puedo hacer para que el usuario no pueda escribir Letras, digamos en Un Text que nesecita Un numero de telefono? Trate de encontrar en ...
  #1 (permalink)  
Antiguo 28/08/2004, 11:02
 
Fecha de Ingreso: octubre-2003
Mensajes: 78
Antigüedad: 20 años, 5 meses
Puntos: 0
Como Impedir que escriban Letras, solo Numeros en un Text ?

Como puedo hacer para que el usuario no pueda escribir Letras, digamos en Un Text que nesecita Un numero de telefono?

Trate de encontrar en la propiedades del Text pero no tuve suerte.


Gracias por su ayuda
cacho
  #2 (permalink)  
Antiguo 28/08/2004, 11:06
 
Fecha de Ingreso: noviembre-2003
Ubicación: Mexico
Mensajes: 1.081
Antigüedad: 20 años, 5 meses
Puntos: 7
en archivo de texto??
porque no pones algo asi como getCHar (o no me acuerdo como se llama la funcion) y pones algo asi si como:
if ( char == 1 || char==2 ....etc)
escribe

else
no escribas
  #3 (permalink)  
Antiguo 28/08/2004, 11:10
 
Fecha de Ingreso: octubre-2003
Mensajes: 78
Antigüedad: 20 años, 5 meses
Puntos: 0
creo que no me explique, en TextBox de VB.

En el TextBox quiero que escriban El Numero de telefono, pero tambien deja escribir letras, claro despues sale error, pero quiero que no deje escribir letras solo numeros
  #4 (permalink)  
Antiguo 28/08/2004, 13:51
Avatar de Beakdan  
Fecha de Ingreso: diciembre-2001
Ubicación: Monterrey, Nuevo León
Mensajes: 433
Antigüedad: 22 años, 3 meses
Puntos: 7
Podrías usar la API de Windows...
Código:
'Ejemplo basado en documentación de API-Guide http://www.allapi.net/
'A nivel de módulo pon el siguiente código

Const GWL_STYLE = &HFFFFFFF0
Const ES_NUMBER = &H2000&

Private Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long) As Long
Private Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long

Private Sub SetNumeric(ByRef NumberText As TextBox)
Dim lEstiloAct As Long

    'Obtienes el estilo de la ventana (en este caso cuadro de texto)
    lEstiloAct = GetWindowLong(NumberText.hwnd, GWL_STYLE)
    'Modificas el estilo actual asignándole el flag de estilo Solo-Numérico
    lEstiloAct = lEstiloAct Or ES_NUMBER
    'Asignar al cuadro de texto el nuevo estilo
    SetWindowLong NumberText.hwnd, GWL_STYLE, lEstiloAct
    'Actualizas para que tome el cambio
    NumberText.Refresh
End Sub
Puesto que parece que el campo siempre habrá de recibir números, la anterior función es adecuada. Si quisieras que el campo en algún momento volviera a tomar caracteres alfabéticos, habría que anular el flag, y es sólo una modificación sencilla.

Cuando quieras que algún campo de texto deje de recibir caracteres alfabéticos, simplemente llamas a la función así:

Código:
'Text1 es un campo de texto
SetNumeric Text1
Y no tienes que volver a preocuparte por las letras en tu campo...

Espero que te sirva.
Saludos.
  #5 (permalink)  
Antiguo 28/08/2004, 15:05
Avatar de aavg  
Fecha de Ingreso: abril-2002
Ubicación: Morelia México
Mensajes: 356
Antigüedad: 22 años
Puntos: 1
Jeje vaya respuesta la de arriba suena bastante bien pero el poder de las APIS de Windows es muy elevado a lo que Cacho_K nos pide, pero el Visual Basic es SENCILLO y tan sencillo es que aqui te pongo un ejemplo de como validar que un TextBox solamente reciba NUMEROS.

Suponiendo que el TextBox se llama TNumeros

'En el evento KeyPress esta la clave, aqui mando llamar un a funcion que yo escribi
'la funcion se llama Numeros
Private Sub TNumeros_KeyPress(KeyAscii As Integer)
KeyAscii = Numeros(KeyAscii)
End Sub

'Esta función solo copiala y pegala en tu codigo

Public Function Numeros(Tecla As Integer) As Integer
Dim strValido As String
'Esta es la cadena que contiene los caracteres aceptados en tu TextBox
'Asi que si en el número de telefono le quieres aceptar algun otro
'caracter lo puedes hacer tan solo con incluirlo en la cadena STRVALIDO
strValido = "0123456789"
If Tecla > 26 Then
If InStr(strValido, Chr(Tecla)) = 0 Then 'Aqui se checa si la tecla pulsada esta en la cadena de numeros si regresa 0 quiere decir que no fue un numero
Tecla = 0
End If
End If
Numeros = Tecla
End Function


Espero que te sirva, hasta pronto
__________________
Abraham Velasco
Usuario # 516 en los Foros del Web.
El hombre no vale por lo que sabe, sino por lo que transmite
C'est parce qu'il y a un Dieu que nous sommes libres
  #6 (permalink)  
Antiguo 28/08/2004, 15:07
Avatar de aavg  
Fecha de Ingreso: abril-2002
Ubicación: Morelia México
Mensajes: 356
Antigüedad: 22 años
Puntos: 1
Por cualquier cosa aqui te pongo el código anterior libre de comentarios


Private Sub TNumeros_KeyPress(KeyAscii As Integer)
KeyAscii = Numeros(KeyAscii)
End Sub

Public Function Numeros(Tecla As Integer) As Integer
Dim strValido As String
strValido = "0123456789"
If Tecla > 26 Then
If InStr(strValido, Chr(Tecla)) = 0 Then
Tecla = 0
End If
End If
Numeros = Tecla
End Function
__________________
Abraham Velasco
Usuario # 516 en los Foros del Web.
El hombre no vale por lo que sabe, sino por lo que transmite
C'est parce qu'il y a un Dieu que nous sommes libres
  #7 (permalink)  
Antiguo 29/08/2004, 12:34
 
Fecha de Ingreso: noviembre-2003
Ubicación: Mexico
Mensajes: 1.081
Antigüedad: 20 años, 5 meses
Puntos: 7
Cita:
Iniciado por Beakdan
Podrías usar la API de Windows...
[CODE]
'Ejemplo basado en documentación de API-Guide http://www.allapi.net/

oye Beakdan , hay alguna pagina asi pero para C/C++ que vengan todas las funciones del winapi???

o son exactamente las mismas y se utilizan igual (es que no se nada de VB)???
  #8 (permalink)  
Antiguo 29/08/2004, 23:09
Avatar de Beakdan  
Fecha de Ingreso: diciembre-2001
Ubicación: Monterrey, Nuevo León
Mensajes: 433
Antigüedad: 22 años, 3 meses
Puntos: 7
blackwind:
La API es la misma siempre que programes en Windows. Las funciones puedes usarlas con cualquier lenguaje de programación cuyo resultado final sea un exe para windows. Las he usado con Visual Basic, con Delphi y con C++ al menos.
Lo único que cambia es la declaración para cada lenguaje. Para Visual Basic, la declaración adecuada la puedes encontrar con el "API Viewer" incluido en las herramientas de Visual Studio (aunque no incluye todas las declaraciones).
En http://msdn.com busca "Platform SDK". El kit de desarrollo de software (SDK) es la referencia completa de la API de Windows, y es descargable gratuitamente (pero es enorme). También viene con Visual Studio.

aavg:
Supongo que tienes razón, pero me he acostumbrado tanto a la API, que ahora la uso en toda aplicación que hago. Es cierto que sus funciones suelen ser vistas como un "tópico complicado", sin embargo hay cosas que por eficiencia o velocidad resultan mucho más sencillas de realizar con la API.
Aunque en este caso no importa, creo que la función que puse es muy sencilla ¿me equivoco?

Hasta luego.
  #9 (permalink)  
Antiguo 30/08/2004, 00:27
 
Fecha de Ingreso: junio-2003
Mensajes: 111
Antigüedad: 20 años, 10 meses
Puntos: 0
Hola:
Yo lo hago así:
En el evento Key press del text box


Private Sub textMargen_KeyPress(KeyAscii As Integer)

If IsNumeric (Chr(KeyAscii)) Then
Else
KeyAscii = 0
End If

End Sub

Saludos
  #10 (permalink)  
Antiguo 30/08/2004, 09:37
Avatar de GeoAvila
Colaborador
 
Fecha de Ingreso: diciembre-2003
Ubicación: Antigua Guatemala
Mensajes: 4.032
Antigüedad: 20 años, 4 meses
Puntos: 53
si no estoy mal ese tema ya estaba en las FAQ's,,, nos vemos
__________________
* Antes de preguntar lee las FAQ, y por favor no hagas preguntas en las FAQ
Sitio http://www.geoavila.com twitter: @GeoAvila
  #11 (permalink)  
Antiguo 30/08/2004, 12:23
 
Fecha de Ingreso: abril-2004
Ubicación: Añatuya
Mensajes: 95
Antigüedad: 20 años
Puntos: 0
No es mas facil usar la funcion IsNumeric() ?

Creo que el codigo seria el siguiente

If IsNumeric(Text1.text) then
'codigo en caso de ingresar un numero
Else
'codigo en caso de NO ingresar un numero
End If
__________________
Un angel le dice a Dios - Señor han descifrado el genoma humano - a lo que Dios contesta - Condenados hackers, voy a tener que cambiar la contraseña
  #12 (permalink)  
Antiguo 09/05/2011, 06:31
Avatar de ProgramadorFrustrado  
Fecha de Ingreso: mayo-2011
Mensajes: 18
Antigüedad: 12 años, 11 meses
Puntos: 0
Respuesta: Como Impedir que escriban Letras, solo Numeros en un Text ?

Hola yo tambien tengo el mismo problema tienes que especificar un updatecommand , o eso tengo entendido pero no se donde ni como se especifica
  #13 (permalink)  
Antiguo 09/05/2011, 06:32
Avatar de ProgramadorFrustrado  
Fecha de Ingreso: mayo-2011
Mensajes: 18
Antigüedad: 12 años, 11 meses
Puntos: 0
Respuesta: Como Impedir que escriban Letras, solo Numeros en un Text ?

perdon me pire de foro :S
  #14 (permalink)  
Antiguo 13/05/2011, 13:57
 
Fecha de Ingreso: enero-2010
Ubicación: SJM Lima - Peru
Mensajes: 55
Antigüedad: 14 años, 2 meses
Puntos: 1
Respuesta: Como Impedir que escriban Letras, solo Numeros en un Text ?

Hola
en Visual basic6
Seria del siguiente modo
Un control llamando TxtUsuario y metemos el sgte codigo en su evento KEYPRESS

Código vb:
Ver original
  1. Private Sub TxtUsuario_KeyPress(KeyAscii As Integer)
  2.         Select Case KeyAscii
  3.             Case 8, 46
  4.             Case Is < 48, Is > 57
  5.                 KeyAscii = 0
  6.         End Select
  7. End Sub

Pruebalo y me dices

www.bitxense.com.pe | Soluciones Informaticas S.A.C. - [email protected]
Cualquier duda soy Jhon Bautista Palomino aqui esta mi correo MSN [email protected] Lima-Peru
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Tema Cerrado

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 21:52.