Foros del Web » Programación para mayores de 30 ;) » Programación General » Visual Basic clásico »

Validación con LostFocus

Estas en el tema de Validación con LostFocus en el foro de Visual Basic clásico en Foros del Web. Buenos días a todos, antes de realizar mi pregunta comentaros que soy novato en esto pero supongo que os daréis cuenta en cuanto la realice... ...
  #1 (permalink)  
Antiguo 09/10/2006, 02:50
 
Fecha de Ingreso: octubre-2006
Mensajes: 4
Antigüedad: 17 años, 7 meses
Puntos: 0
Validación con LostFocus

Buenos días a todos, antes de realizar mi pregunta comentaros que soy novato en esto pero supongo que os daréis cuenta en cuanto la realice...

Mi problema es que estoy desarrollando una aplicación en VB6 y tengo unos campos de validación horaria con el evento lostfocus, necesito saber como hago para que no me deje escribir nada mas que número en el textbox, con varios If... he definido que temas de las horas pero para que no me deje poner signos...no lo consigo.
Con el evento change si que lo he conseguido pero lo necesito con lostfocus...

Tengo 4 textbox de dos posiciones cada uno en el cual en el primero tengo la hora de inicio y en el seguro los minuos de inicio, en los dos restantes las horas y minutos finales...

Un saludo y gracias.
  #2 (permalink)  
Antiguo 09/10/2006, 04:39
 
Fecha de Ingreso: noviembre-2005
Mensajes: 751
Antigüedad: 18 años, 6 meses
Puntos: 13
Hola

Para comprobar en el evento lost_Focus si solo ha introducido números, utiliza la función isnumeric de esta forma:

Código:
Private Sub Text1_LostFocus()

    If Not IsNumeric(Text1.Text) Then
        MsgBox "Intro SOLO num"
        Text1.SetFocus
    End If
Otra opción, que en mi opinión es mejor es controlar lo que introduce según pulsa las teclas, es decir, controlarlo en el evento KeyPress, puedes probar el siguiente código:

Código:
Private Sub Text2_KeyPress(KeyAscii As Integer)

    Select Case KeyAscii
        Case 48, 49, 50, 51, 52, 53, 54, 55, 56, 57
            KeyAscii = KeyAscii
        Case Else
            KeyAscii = 0
    End Select
    
End Sub
Y otra opción es meter la hora y los minutos en un mismo lugar utilizando el control MaskEdit que te permite seleccionar el formato, es decir, el usuario solo tiene que introducir los números, no los : de separación y si utilizas bases de datos podrás guardar la información de en tipo date/time.

--Saludos--
  #3 (permalink)  
Antiguo 09/10/2006, 07:52
 
Fecha de Ingreso: octubre-2006
Mensajes: 4
Antigüedad: 17 años, 7 meses
Puntos: 0
Muchas gracias, pero estoy probando y me sigue dejando meter +1, -1, +1, etc, esto es realmente lo que me gustarái solucionar, gracias de todos modos.

Un saludo.
  #4 (permalink)  
Antiguo 09/10/2006, 08:23
 
Fecha de Ingreso: noviembre-2005
Mensajes: 751
Antigüedad: 18 años, 6 meses
Puntos: 13
Hola

Es cierto, con el primer ejemplo deja introducir algunos símbolos como + - . , pero el segundo ejemplo funciona bien (el que va en el evento KeyPress) o tiene que ser obligatoriamente en el Lost_Focus?

--Saludos--
  #5 (permalink)  
Antiguo 09/10/2006, 08:28
 
Fecha de Ingreso: octubre-2006
Mensajes: 4
Antigüedad: 17 años, 7 meses
Puntos: 0
Me gustaría que fuese en ese, por temas laborales...pero parcece que esta complicado...ya te he quitado bastante tiempo, no te preocupes a ver si lo saco por algún lado...

Gracias otra vez.
  #6 (permalink)  
Antiguo 09/10/2006, 08:43
 
Fecha de Ingreso: noviembre-2005
Mensajes: 751
Antigüedad: 18 años, 6 meses
Puntos: 13
Hola

Si obligatoriamente tiene que ser en el lost_focus prueba lo siguiente:

Código:
Private Sub Text1_LostFocus()
    
    Dim i As Integer
    
    For i = 1 To Len(Text1.Text)
        Select Case Mid(Text1.Text, i, 1)
            Case 0 To 9
            Case Else
                MsgBox "Intro SOLO num"
                Text1.SetFocus
        End Select
    Next i

End Sub
--Saludos--
  #7 (permalink)  
Antiguo 09/10/2006, 08:56
 
Fecha de Ingreso: octubre-2006
Mensajes: 4
Antigüedad: 17 años, 7 meses
Puntos: 0
Joder, creo que me vale...no se como darte las gracias...

Voy a terminarlo y te cuento... Un saludo.
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.
Respuesta




La zona horaria es GMT -6. Ahora son las 20:53.