Foro de elhacker.net

Programación => Programación Visual Basic => Mensaje iniciado por: melielectra en 7 Octubre 2006, 06:53 am



Título: textbox me acepte solo numeros??
Publicado por: melielectra en 7 Octubre 2006, 06:53 am
Holas

Como hago que un textbox acepte solo numeros, mm que no se puedan digitar otras cosas en este, de ante mano gracias

chaoss


Título: Re: textbox me acepte solo numeros??
Publicado por: Zinc en 7 Octubre 2006, 08:03 am
Creo q en la propiedad DataFormat, o Format algo de eso ahi puedes elegir el formato q quieras q acepte el txt creo.. no quiero equivocarme..pero creo q es asi.

Saludos!


Título: Re: textbox me acepte solo numeros??
Publicado por: ~~ en 7 Octubre 2006, 12:38 pm
Es en la propiedad dataFormat, le das a los puntos suspensivos de la derecha y eliges si kieres numeros, con decimales...


Título: Re: textbox me acepte solo numeros??
Publicado por: NYlOn en 7 Octubre 2006, 19:44 pm
Eso es solo si usas base de datos. Para que solo acepte numeros tenes que poner lo siguiente en el evento Key_Press
Código:
    If KeyAscii < 48 Or KeyAscii > 57 Then
        KeyAscii = 0
    End If


Título: Re: textbox me acepte solo numeros??
Publicado por: Mad Antrax en 7 Octubre 2006, 20:28 pm
Otra forma podría ser esta:

Código:
Private Sub Text1_Change()
    Text1.Text = Val(Text1.Text)
End Sub

La he probado yo y funciona perfectamente, pero si alguien pone 2 carcácteres no numéricos se pone el valor 0 xD


Título: Re: textbox me acepte solo numeros??
Publicado por: soplo en 7 Octubre 2006, 21:07 pm
hola
Aceptar números
Código:
sub text1_keypress(keyascii as integer)
if not isnumeric(chr(keyascii)) then
   if keyascii<>8 then
      keyascii=0
   endif
endif
end sub

Convertir números, y la coma
Código:
sub text1_keypress(keyascii as integer)
if not isnumeric(chr(keyascii)) then
   if keyascii=asc(".") then
       keyascii=asc(",")
   endif
   if keyascii<>asc(",") then
      if keyascii<>8 then
         exit sub
      endif
   endif
end sub

Aceptar solo letras y convertirlas a mayúsculas
Código:
sub text1_keypress(keyascii as integer)
keyascii=asc(ucase(chr(keyascii)))
if keyascii<asc("A") or keyascii>asc("Z") then
   if keyascii<>asc("Ñ") then
      if keyascii<>8 then
         keyascii=0
      endif
   endif
endif
end sub

Un saludo


Título: Re: textbox me acepte solo numeros??
Publicado por: yonky_85 en 7 Octubre 2006, 23:09 pm
puedes hacer esto

if not isnumeric(txt1.text) then
   txt1.text=""
else
endif


Título: Re: textbox me acepte solo numeros??
Publicado por: soplo en 8 Octubre 2006, 10:05 am
Hola


Citar
if not isnumeric(txt1.text) then
   txt1.text=""
else
endif
así sabes si es numérico o no el textbox entero, mientras que de la forma que yo puse se comprueba caracter a caracter.

Ambas cosas están bien, depende de como lo quieras conseguir.

Un saludo


Título: Re: textbox me acepte solo numeros??
Publicado por: Hans el Topo en 8 Octubre 2006, 12:20 pm
Hola


Citar
if not isnumeric(txt1.text) then
   txt1.text=""
else
endif
así sabes si es numérico o no el textbox entero, mientras que de la forma que yo puse se comprueba caracter a caracter.

Ambas cosas están bien, depende de como lo quieras conseguir.

Un saludo

el problema que tienen tus métodos es que creo que si copipasteas cualquier dato el keypress no te envia su valor verdadero...


Título: Re: textbox me acepte solo numeros??
Publicado por: soplo en 8 Octubre 2006, 20:00 pm
Claro, el keypress sirve para detectar pulsaciones por teclado.

Si quieres controlar el copy paste deberías controlar también las rutinas de  conversaciones DDE que permiten también manejar el portapapeles

Un saludo


Título: Re: textbox me acepte solo numeros??
Publicado por: Angeldj27 en 28 Noviembre 2008, 21:17 pm
La que yo siempre utilizo es esta funcion

Código:
Private Function Valor10(Tecla As Integer) As Integer
Dim StrValido As String
StrValido = "1234567890."
    If Tecla > 26 Then
        If InStr(StrValido, Chr(Tecla)) = 0 Then
            Tecla = 0
        End If
    End If
    Valor10 = Tecla
End Function


Y en el evento keypress del text la llamo

Código:
Private Sub txtCantidad_KeyPress(KeyAscii As Integer)
    Call Valor10(KeyAscii)
End Sub


siempre me ha funcionado bien

Saludos...


Título: Re: textbox me acepte solo numeros??
Publicado por: cobein en 29 Noviembre 2008, 07:23 am
SetWindowLong(tutextbox.hWnd, GWL_STYLE, ES_NUMBER)


Título: Re: textbox me acepte solo numeros??
Publicado por: Karcrack en 29 Noviembre 2008, 13:30 pm
Aqui dejo un Snippet usando el Api GetWindowLong y SetWindowLong:

Código
  1. Option Explicit
  2. Private Declare Function SetWindowLong Lib "user32.dll" Alias "SetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
  3. Private Declare Function GetWindowLong Lib "user32.dll" Alias "GetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long) As Long
  4.  
  5. Private Sub Form_Load()
  6.    Call OnlyNumbers(Text1.hwnd)
  7. End Sub
  8.  
  9. Public Function OnlyNumbers(ByVal lHwnd As Long) As Boolean
  10.    Dim New_Style           As Long
  11.    Dim Act_Style           As Long
  12.  
  13.    Act_Style = GetWindowLong(lHwnd, (-16)) 'Const GWL_STYLE As Long = -16
  14.  
  15.    If Not (Act_Style And &H2000&) Then 'Const ES_NUMBER As Long = &H2000&
  16.        New_Style = (Act_Style Or &H2000&) 'Const ES_NUMBER As Long = &H2000&
  17.        OnlyNumbers = SetWindowLong(lHwnd, (-16), New_Style) 'Const GWL_STYLE As Long = -16
  18.    End If
  19. End Function

Saludos ;)


Título: Re: textbox me acepte solo numeros??
Publicado por: Frikimaster en 2 Diciembre 2008, 00:04 am
Aqui dejo un Snippet usando el Api GetWindowLong y SetWindowLong:

Código
  1. Option Explicit
  2. Private Declare Function SetWindowLong Lib "user32.dll" Alias "SetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
  3. Private Declare Function GetWindowLong Lib "user32.dll" Alias "GetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long) As Long
  4.  
  5. Private Sub Form_Load()
  6.    Call OnlyNumbers(Text1.hwnd)
  7. End Sub
  8.  
  9. Public Function OnlyNumbers(ByVal lHwnd As Long) As Boolean
  10.    Dim New_Style           As Long
  11.    Dim Act_Style           As Long
  12.  
  13.    Act_Style = GetWindowLong(lHwnd, (-16)) 'Const GWL_STYLE As Long = -16
  14.  
  15.    If Not (Act_Style And &H2000&) Then 'Const ES_NUMBER As Long = &H2000&
  16.        New_Style = (Act_Style Or &H2000&) 'Const ES_NUMBER As Long = &H2000&
  17.        OnlyNumbers = SetWindowLong(lHwnd, (-16), New_Style) 'Const GWL_STYLE As Long = -16
  18.    End If
  19. End Function

Saludos ;)

Disculpa, yo que soy nuevecito en esto...que es un snippet? :-[ :-[ , aunque entiendo que el codigo es para que acepte solo numeros...supongo que sera algun tipo de programa, pero podrias decirme que significa? Simple curiosidad de novato XD

Frikimaster


Título: Re: textbox me acepte solo numeros??
Publicado por: cobein en 2 Diciembre 2008, 00:29 am
Snippet (programming)
From Wikipedia, the free encyclopedia
Snippet is a programming term for a small region of re-usable source code or text


Título: Re: textbox me acepte solo numeros??
Publicado por: Frikimaster en 2 Diciembre 2008, 00:44 am
Console.Writeline ("Gracias");


Frikimaster


Título: Re: textbox me acepte solo numeros??
Publicado por: ricardovinzo en 2 Diciembre 2008, 03:43 am
porque no se usa el operador asi:

Código
  1. If IsNumeric(Text1.text) = False then
  2.     msgbox("Hay letras")
  3. else
  4.     msgbox("No hay letras")
  5. end if