none
VALIDACION TEXTBOX RRS feed

  • Pregunta

  • OK, una pregunta tengo una textbox que ya me valida la escritura de solo numeros pero ahora necesito hacer que me acepte el punto, tonces como se hace eso? en la textbox en el evento KeyPress hago el llamamo a una funcion llamada solonumeros, y ahi esta la como tonces como hago para no repetir la escritura del punto, alguien porfavorme allude, es para registra vaores como 7,3-6,5, cosas asi
    de antemano muchas gracias

    ROLANDHYUK
    lunes, 11 de enero de 2010 15:12

Respuestas

  • Ok, cambia el llamado en el evento KeyPress por el siguiente codigo:

            e.KeyChar = Chr(gf_Decimales(Asc(e.KeyChar)))
            If e.KeyChar = "." Then
                If InStr(TextBox1.Text, ".") Then
                    e.KeyChar = ""
                End If
            End If
    Esto solo te permitira poner un solo punto, la funcion InStr busca una expresion en una cadena de caracteres.
    • Marcado como respuesta ROLANDHYUK lunes, 11 de enero de 2010 19:44
    lunes, 11 de enero de 2010 18:00
  • Claro que puedes convertirla en DLL, aunque te recomiendo que generes primero un modulo y ahi vayas creando todas las funciones o rutinas que vayas a utilizar de forma global en tu sistema o sistemas, y ya que las tengas bien probadas decidas cuales quieres crear como dll y entonces si, a crear la DLL

    Y de el manual, no tengo ninguno yo me compre unos libritos y de ahi he comenzado a aprender y sobre todo las dudas que voy teniendo en este foro me han dado una ayudadota.


    Si te funciono la solucion que te proporcione no olvides marcar la respuesta como correcta.
    • Marcado como respuesta ROLANDHYUK lunes, 11 de enero de 2010 19:44
    lunes, 11 de enero de 2010 19:06

Todas las respuestas

  • Bien, puedes tener 2 formas de hacerlo, una es con el MaskedTextBox para que en tus controles pongas mascaras de captura y la otra segun veo ya tienes una funcion que te acepta solo numeros pus bien siguiendo con esto podrias hacer una fincion que se llama Decimales y poner el siguiente codigo:

        Public Function gf_Decimales(ByVal Tecla As Integer) As Integer
            '************************************************************************
            ' Función        : gf_Decimales
            ' Descripción    : Valida que solo se capturen: {.}, {0-9}
            ' Parámetros     :
            '     Tecla      : Variable donde se deposita el valor KeyAscii
            ' Valor Devuelto :
            '     Valor Ascii: Si la tecla pulsada fué {.}, {0-9}
            '     0          : Si la tecla pulsada fué diferente de {.}, {0-9}
            '************************************************************************
            Select Case Tecla
                Case 8 To 10, 13
                Case 46, 48 To 57
                Case Else
                    Tecla = 0
            End Select
            Return Tecla
        End Function
    


    Espero te sirvan los tips que te estoy dando
    lunes, 11 de enero de 2010 15:18
  • hola

    aqui se realizo una pregunta similar

    Colocar separadores de miles en el momento de captura. tal como lo hace una calculadora
    http://social.msdn.microsoft.com/Forums/es-ES/vbes/thread/393d805d-ab42-4d8c-95fb-9d098b822688/

    o tambiene sta bueno si te animas con las expresioens regulares

    Validar un textbox por tecla apretada
    http://social.msdn.microsoft.com/Forums/es-ES/vcses/thread/fcc7416c-3105-46a6-b6ef-04fb2d1d224d

    si este ultimo esta en c# pero se peude traducir
    Convert C# to VB.NET
    Code Converter

     

    tambien otra alternativa es trabajar con el control

    MaskedTextBox
    http://msdn.microsoft.com/es-es/library/system.windows.forms.maskedtextbox.aspx

    Tutorial: Trabajar con el control MaskedTextBox
    http://msdn.microsoft.com/es-es/library/kkx4h3az%28VS.80%29.aspx

    este te permite aplciar una amscara al input de los datos

    saludos
    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina
    lunes, 11 de enero de 2010 15:21
  • Se me olvido poner el llamado de la funcion, en el evento KeyPress de tu control TextBox solo necesitas poner la siguiente linea:

    e.KeyChar = Chr(gf_Decimales(Asc(e.KeyChar)))

    lunes, 11 de enero de 2010 15:22
  • SI SEÑOR, ESA FUNCION ESTA BIEN VACANA, ME GUSTO MUCHO,, PERO YO SOLO NECESITO DIGITAR UN SOLO
    PUNTO, Y ELLA ME DEJA COLOCAR VARIOS PUNTO, TONCES NECESITO ES QUE SEA : 7.5 Y LISTO DE AHI NO MAS PUNTOS
    LE AGRADEZCO ME AYUDE,

    ROLANDHYUK

    lunes, 11 de enero de 2010 17:51
  • Ok, cambia el llamado en el evento KeyPress por el siguiente codigo:

            e.KeyChar = Chr(gf_Decimales(Asc(e.KeyChar)))
            If e.KeyChar = "." Then
                If InStr(TextBox1.Text, ".") Then
                    e.KeyChar = ""
                End If
            End If
    Esto solo te permitira poner un solo punto, la funcion InStr busca una expresion en una cadena de caracteres.
    • Marcado como respuesta ROLANDHYUK lunes, 11 de enero de 2010 19:44
    lunes, 11 de enero de 2010 18:00
  • huy señor paco, que nota de funcion en verdad que me ha ayudado mucho, pero tengo una pregunta, sera que eso lo puedo personalizar como y colocarlo en el cuadro de herramienteas como si fuera una dll, y asi utilizarlo cuando yo quiera?

    ademas otra
    sera que usted me podria mandar algun manual de visual o algo que hable de sus eventos y declaraciones y como funcionana, es que me ha gustado este mundo del visual, es muy rico aprender esto
    de antemano gracis nos vemos
    ceste es mi correo electronico rolandfern@hotmail.com

    por favor dirigase a mi y me manda us correo para escribirle.

    gracias
    lunes, 11 de enero de 2010 18:57
  • Claro que puedes convertirla en DLL, aunque te recomiendo que generes primero un modulo y ahi vayas creando todas las funciones o rutinas que vayas a utilizar de forma global en tu sistema o sistemas, y ya que las tengas bien probadas decidas cuales quieres crear como dll y entonces si, a crear la DLL

    Y de el manual, no tengo ninguno yo me compre unos libritos y de ahi he comenzado a aprender y sobre todo las dudas que voy teniendo en este foro me han dado una ayudadota.


    Si te funciono la solucion que te proporcione no olvides marcar la respuesta como correcta.
    • Marcado como respuesta ROLANDHYUK lunes, 11 de enero de 2010 19:44
    lunes, 11 de enero de 2010 19:06
  •  Private Sub txtCONTROL_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles txtPoints.KeyPress
    
            'Acepta Solo Números
            If InStr("0123456789", e.KeyChar) = False Then
                If (Asc(e.KeyChar)) <> 8 And (Asc(e.KeyChar)) <> 46 And (Asc(e.KeyChar)) <> 45 Then
                    e.Handled = True
                End If
            End If
            
           'también acepta retroceso (8)  y punto decimal (46) y guión negativo (45)
            
    
            'Ascii
            '8  = Retroceso
            '45 = guion/Negativo -
            '46 = Punto Decimal
            '47 = Diagonal
            '58 = dos Puntos Decimales
    
        End Sub
    no creo que sea bueno que lo conviertas a un control personalizado solo mete ésta parte de código a tu evento keypress

    saludos
    • Propuesto como respuesta kakaroto2012 lunes, 11 de enero de 2010 19:40
    lunes, 11 de enero de 2010 19:39