[Ayuda] Filtrar Caracteres TextBox

Iniciado por Asalta_Hacker, 18 Diciembre 2007, 22:40 PM

0 Miembros y 3 Visitantes están viendo este tema.

Asalta_Hacker

Hola, este es mi problema, tengo un textbox al que le e hecho una funcion para que solo acepte numeros y puntos (.), me gustaria saber como restringirlo para que solo pueda poner el formato IP, tipo XXX.XXX.XXX.XXX , y no todo numeros o todo puntos, alguien sabria ayudarme?

Muchas Gracias

Salu2!

cassiani

#1
 Échadle un vistazo a esto a ver si es lo que queres, la verdad siempre hay formas mas simplificadas de hacerlo, pero tengo sueño mañana tengo que trabajar y esto es lo único que se me ocurre por el momento (creo que ni leí bien).  :rolleyes:

Mi Conciencia: ¿Tienes que trabajar? ¡Pero si tú no trabajas!
Yo: ¡cierto es! Pero igual me debo levantar temprano para estudiar,  ::)


Ahora mismo se me ocurre una forma muy sencilla de hacerlo, usando cuatro textbox o mejor aun una matriz de ellos, por ejemplo, y que cada uno sea un byte de la IP, luego lo concatenas junto con los puntos y ¡ya esta!  :huh:


Pero si por otro lado preferís hacerlo con un solo textbox, te dejo esto:
Option Explicit

Private Sub Form_Load()
    Text1.MaxLength = 15
End Sub

Private Sub Text1_KeyPress(KeyAscii As Integer)
On Error Resume Next
Dim Tecla As String
    Tecla = Chr(KeyAscii)
    If KeyAscii <> 8 Then 'Si no se selecciono la tecla de dirección, entramos
        Select Case Tecla
            Case "0" To "9" 'metemos a números de 0 a 9 en paquete de permitidos
                If Len(Text1.Text) > 2 Then
                    'Si los últimos tres caracter son números...
                    If IsNumeric(Mid(Text1.Text, Len(Text1.Text), 1)) Then '1
                        If IsNumeric(Mid(Text1.Text, Len(Text1.Text) - 1, 1)) Then '2
                            If IsNumeric(Mid(Text1.Text, Len(Text1.Text) - 2, 1)) Then '3
                                KeyAscii = 0 'entonces no dejamos que introduzca otro
                            End If
                        End If
                    End If
                End If
            Case ".": 'Metemos al puntito entre los permitidos
                'No permitimos puntos si el TextBox está vacio
                If Text1.Text = "" Then KeyAscii = 0
                'Acá no permitimos que se coloquen dos puntos seguidos _
                si el caracter anterior es un punto, no permite que se inserte otro
                If Right(Text1.Text, 1) = "." Then KeyAscii = 0
            Case Else:
                KeyAscii = 0
        End Select
    End If
End Sub 'by C@ssi@ni


Aparte de esto tenes que hacer muchas validaciones a la IP final, por ejemplo: cada byte del código (me refiero a la IP, claro está), debe estar entre 0 y 255, tenes que restringir el números de puntos que entran al textbox (obviamente solo pueden ser tres xxx.xxx.xxx.xxx) podes hacerlo usando un for hasta Len(text1.text) que vaya buscando y contando los puntos y que una vez estén completos los tres, no permita la entrada de otro mas (creo que va así, la verdad ya ni veo) otra cosa, también tenes que tratar el copy & paste porque sino se comerá cosas desagradable y le dará indigestión (todo eso es tarea para vos,  :xD).

Saludos voy a dormir...  :o

Asalta_Hacker

Muchas gracias, lo probare de las 2 formas!

Salu2

Asalta_Hacker

Exacto! Me reafirmo, esto sirvio muy binen, muchas gracias, era el ultimo toke k le faltaba a mi Software!

Salu2

cassiani

 Para eso estamos, ¡mi amigo!
Saludos...  ;D