Visual Basic - Dato de tiempo

Life is soft - evento anual de software empresarial
 
Vista:

Dato de tiempo

Publicado por Krator (71 intervenciones) el 03/12/2005 20:27:38
Hola,

Tengo una caja de texto, a la que me gustaría que se ingresara un código de tiempo, como 4:23 o 01:32:13 y que no sé pueda ingresar un dato falso (No existe el segundo 61).
¿Quién es el guapo que me ayuda?
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Dato de tiempo

Publicado por ivan (463 intervenciones) el 03/12/2005 20:59:13
Puedes usar el MaskEditBox (del cual se muy poco), o si no... haz la captura libre, al momento de aceptar conviértelo a tiempo, si funciona la correccion se tecleó bien... si no funciona entonces lo vuelves a capturar...

Saludos y suerte
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Dato de tiempo

Publicado por Krator (71 intervenciones) el 05/12/2005 12:04:57
Bueno, especifico finalmente como lo deje, por si a alguien le sirve de ayuda.

A la caja de texto le seleccioné su propiedad Dataformat y la puse a tipo Time.
Luego en su evento Change, puse
If Len(Text1.Text) = 2 Then
Text1 = Text + ":" 'lo que va entre comillas son 2 puntos, para que quede mejor.
Text1.SelStart = 3 'esto es para q se coloque al final,sino se coloca al principio
End If

Luego para validar si es correcto, solo indico en su depuración:
If IsDate(Text1.Text) = True Then
....

se puede mejorar con algunas ideas que estoy dispuesto a recibir.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Dato de tiempo(Mejora)

Publicado por Krator (71 intervenciones) el 05/12/2005 13:04:00
Bueno, más tarde me dí cuenta que lo anteriormente dicho, solo vale para horas del día, y no para tiempos, ya que puede haber 37 min 12 s...Y esto no lo aceptaría lo anterior.

Así que me he puesto a darle vueltas y he sacado este código para alguien que lo necesite:

Private Sub Text_Change()
If Len(Text) = 2 Then
Text = Text + ":"
Text.SelStart = 3
End If
End Sub

Private Sub Text_KeyDown(KeyCode As Integer, Shift As Integer)
If KeyCode > 47 And KeyCode < 58 Then
If Len(Text) = 5 Then
Text = Text + ":"
Text.SelStart = 6
End If
End If
End Sub

Private Sub Text_KeyPress(KeyAscii As Integer)
If (KeyAscii < 48 Or KeyAscii > 57) Then
If KeyAscii <> 8 And KeyAscii <> 9 And KeyAscii <> 13 Then
KeyAscii = 0
End If
End If
End Sub

Private Sub Text_LostFocus()
Dim cadena() As String
cadena() = Split(Text, ":")
tam = UBound(cadena()) + 1
If tam = 2 Then
If Val(cadena(0)) < 0 Or Val(cadena(0)) > 59 Then
MsgBox "Minutos no válidos"
Text.Text = ""
Text.SetFocus
End If
If Val(cadena(1)) < 0 Or Val(cadena(1)) > 59 Then
MsgBox "Segundos no válidos"
Text.Text = ""
Text.SetFocus
End If
End If
If tam = 3 Then
If Val(cadena(1)) < 0 Or Val(cadena(1)) > 59 Then
MsgBox "Minutos no válidos"
Text.Text = ""
Text.SetFocus
End If
If Val(cadena(2)) < 0 Or Val(cadena(2)) > 59 Then
MsgBox "Segundos no válidos"
Text.Text = ""
Text.SetFocus
End If
End If
End Sub

Este ejemplo sirve tanto para horas,minutos y segundos, como para minutos y segundos solamente.

Sigo aceptando sugerencias de mejora. Un saludo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Dato de tiempo(Mejora)

Publicado por Pedro Luis (878 intervenciones) el 05/12/2005 13:56:40
Me parece que complicas mucho la cosa.
Creo que con poner en el LostFocus
if not isdate(Text1) and cdate(texto1)>1 then Msgbox("No cuela")
Porque no es fecha o aunque es fecha es mayor de un dia
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar