Busco ayuda para formatear la hora utilizando maskedbox en Visual Basic

Necesito trabajar con horas, para que el usuario ingrese la hora así:
8:00 a.m o 3:45 pm estuve investigando y encontré maskedbox y me permite colocar la mascara ##:## am /pm y se supone que hasta así no tendría problema, pero no permite que el usuario coloque la hora am o pm.
Si el digita 8:00 y le da enter le aparece como 8:00 am y para pm me toca hora internacional.
La idea es que el coloque la hora a su gusto am o pm.

1 respuesta

Respuesta
1
Cuando trabajes con horas o fechas sugiero utilices el control DateTime Picker que permite este tiempo de acciones, y te olvidas de las validaciones, para trabajar con este control debes agregarlo desde:
Menú: Proyecto > Componentes
Activa la casilla:
Microsoft Common Controls-2 6.0
Agrega un DTPicker al formulario, haz clic derecho sobre el control y elige "Properties" [o "Propiedades" según sea tu caso].
La propiedad "Format" establécela a "3 - dtpCustom"
En la propiedad "CustomFormat" escribe hh:mm tt [hh = horas en formato de 12 horas (HH para formato de 24 horas); mm = minutos; tt = am o pm según sea el caso], y finalmente haz clic en "Aceptar".
Es exactamente lo que necesitaba, ahora necesito otra ayuda abusando de tu tiempo y es:
Como haría para trabajar con minutos, pero capturandolo así
01:15
o
00:45
En el primer caso es 1 hora y 15 minutos, y en el segundo 45 minutos, lo intente con dtpicker en la opción custom y le aplique el formato hh:mm pero me aparece el calendario, es decir me debe permitir captura horas y minutos sin am o pm
Y otra cosa en tal caso de hacerse con este objeto con que función puedo separlos para convertir todo a minutos.
Gracias por todo tu respuesta
Pues si utilizas el mismo control toma en cuenta que el usuario sólo podrá capturar hasta 24 horas con 59 minutos, ya que son las horas y minutos totales en un día y el el cuadro de propiedades [el que sale al dar clic derecho y elegir "Properties"] activa la casilla "UpDown", ésta te permite "bloquear" el calendario y mostrar sólo un par de botones pequeños que le permiten al usuario aumentar o disminuir horas o minutos.
Para el caso de convertir todo a minutos usando este control puedes hacer lo siguiente:
Private Sub Command1_Click()
    Dim minutos As Integer
    minutos = DTPicker1.Hour * 60 + DTPicker1.Minute
    MsgBox minutos
End Sub
El ejemplo anterior supone un Commandbuton llamado "Command1" que al ser presionado envía un mensaje en pantalla con el total de minutos en el DateTimePicker llamado "DTPicker1"
NOTA: Para el caso de utilizar más de 24 horas puedes usar TextBoxs con propiedad "Length" en "2" y hacer algo similar a lo que te planteo, así se podría introducir hasta 99 horas, pero tendrías que validar el TexrtBox de minutos para que no se introduzcan más de 59.
Hola de nuevo
Mira me sirvió bastante tu ayuda
Pude utilizar el dtpicker para minutos pero ahora cuando escribo 00:45, me lo deja 12:45, hay alguna forma para que no lo haga.
O tendré que utilizar otro objeto
Espero tus comentarios gracias
Creo que olvidé mencionar que debes establecer la propiedad "Format" en HH:mm, las H mayúsculas indican que trabajarás con 24 horas mientras que las h minúsculas te reconocen el formato pero en 12 horas, por eso al poner 0 automáticamente te lo cambia a 12. [Ya vi que en el comentario 1 hice esta aclaración]

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas