Fecha en un textbox

14/09/2004 - 22:43 por Kevin | Informe spam
Saludos a todos, mi problema es que quiero dar de alta un
campo del tipo fecha, pero no me aparecen las barra
divisorias de la fecha " / / " dentro del textbox para
ser llenadas. Ya busque en las propiedades del textbox y
no las encontre, como puedo solucionarlo?
muchisimas gracias.

Preguntas similare

Leer las respuestas

#1 Fechas en TextBox
14/09/2004 - 23:34 | Informe spam
Muchos te van a sugerir que utilices un control llamado
DateTimePicker o el control MonthCalendar. Dichos
controles ofrecen mayor control sobre el manejo de fechas.

Lo del TextBox con { / / } quedó en el pasado y si
quieres algo así te va a llevar tiempo hacer rutina de
validación para el ingreso de fechas.

Te suguiero que te vayas acostumbrando a este nuevo tipo
de controles. Sin embargo, si lo que quieres es usar los
{ / / } , puedes agregar el control llamado Microsoft
Masked Edit que está dentro de los Componentes COM de la
personalización de barras de herramientas. Es exactamente
un TexBox para configurar la entrada de datos investiga
sus propiedades.

Pero te sugiero lo primero.
Espero te sirva.

Saludos a todos, mi problema es que quiero dar de alta un
campo del tipo fecha, pero no me aparecen las barra
divisorias de la fecha " / / " dentro del textbox para
ser llenadas. Ya busque en las propiedades del textbox y
no las encontre, como puedo solucionarlo?
muchisimas gracias.
.

Respuesta Responder a este mensaje
#2 Anonimo
14/09/2004 - 23:39 | Informe spam
Yo que sepa en VB.Net, existe el DateTimePicker, que es el
control de fecha y hora, y si buscas algo como el mask
edit de vb 6.0, en Net no existe.


Saludos a todos, mi problema es que quiero dar de alta un
campo del tipo fecha, pero no me aparecen las barra
divisorias de la fecha " / / " dentro del textbox para
ser llenadas. Ya busque en las propiedades del textbox y
no las encontre, como puedo solucionarlo?
muchisimas gracias.
.

Respuesta Responder a este mensaje
#3 jose
14/09/2004 - 23:49 | Informe spam
Mira francamente yo soy de la idea de hacer mis propias
clases porque tengo el control total de la aplicación
ademas de adaptar totalmente los objetos a mis
necesidades, tienes la ventaja de dominar más el lenguaje
pero con la desventaja que te nacen muchas interrogantes.

Bueno para que te alientes te anexo código que controla
en automático lo que quieres hacer.

*******inicio rutinas necesarias para el manejo de fechas
'Proceso de validacion para fecha
'en proceso de construccion
Private Function F_blnEsNumero(ByVal lintCar As
Integer) As Boolean
'Función que determina si un caracter es numérico
F_blnEsNumero = False 'False por default
If lintCar >= 48 Then 'Por performance se divide
el IF en dos
If lintCar <= 59 Then
F_blnEsNumero = True
End If
End If
End Function
Private Function F_blnEsLetra(ByVal lintCar As
Integer) As Boolean
'Función que determina si un caracter es letra
F_blnEsLetra = False 'False por default
If lintCar >= 65 Then 'Por performance se divide
el IF en dos
If lintCar <= 90 Then
F_blnEsLetra = True
End If
End If
End Function
Private Function lfstrFechaValida(ByVal
pFechaDigitada As String) As String
'Función que váilida si el contenido del objeto
es una fecha válida
Dim psFecha As String
Dim lstrDia As String 'Día digitado
Dim lintDia As String 'Día digitado en formato
numérico
Dim lstrMes As String 'Mes digitado
Dim lintMes As String 'Mes digitado convertido
ha numérico
Dim lstrYY As String 'Año digitado
Dim lint1 As Integer 'Primer slash
Dim lint2 As Integer 'Segundo slash
Dim lstrMeses As String 'Meses del año
Dim lintPos As Integer 'Posición del mes en la
cadena de meses
Dim ldtmPrueba As Date 'Valor para probar fecha

'Valores devueltos por la función lfstrFechaValida
' 0= Fecha Válida
' 1= Día Inválido
' 2= Mes Inválido
' 3= Año Invalido
' 4= Fecha invalida
' 5= Error en validación
psFecha = pFechaDigitada
lfstrFechaValida = 4 'Retorna fecha invalida
'Verifica que la cadena introducida en el objeto
sea una fecha valida
If Len(psFecha) < 7 Then Exit Function
lstrDia = Mid(psFecha, 1, InStr(psFecha, "/") - 1)
lintDia = Val(lstrDia)
If lintDia > 31 Or lintDia < 1 Then
lfstrFechaValida = 1 : Exit Function
If lintDia >= 1 And lintDia <= 9 Then lstrDia
= "0" & lintDia
lint1 = InStr(psFecha, "/") : If lint1 < 2 Then
Exit Function
lint2 = InStr(lint1 + 1, psFecha, "/") : If lint2
< 2 Then Exit Function
lstrMes = Mid(psFecha, lint1 + 1, (lint2 -
lint1) - 1)
lstrMeses
= "ENE|FEB|MAR|ABR|MAY|JUN|JUL|AGO|SEP|OCT|NOV|DIC|"
If IsNumeric(lstrMes) Then 'Mes númerico
If Val(lstrMes) > 12 Or Val(lstrMes) < 1 Then
lfstrFechaValida = 2 : Exit Function
lintMes = Val(lstrMes)
lstrMes = Mid(lstrMeses, (4 * Val(lstrMes)) -
3, 3)
Else 'Mes cadena
lstrMes = UCase(lstrMes)
lintPos = InStr(lstrMeses, (lstrMes & "|"))
If lintPos < 1 Or Len(lstrMes) <> 3 Then
lfstrFechaValida = 2 : Exit Function
lintMes = (lintPos + 3) / 4
End If

lstrYY = Mid(psFecha, lint2 + 1, 4) '3d
If Len(lstrYY) < 3 Then 'Año numérico en dos
digitos
If Val(lstrYY) <= 79 Then
lstrYY = "20" & lstrYY
Else
lstrYY = "19" & lstrYY
End If
End If
If Val(lstrYY) <= 1753 Then lfstrFechaValida =
3 : Exit Function
If Val(lstrYY) > 9999 Then lfstrFechaValida = 5 :
Exit Function
If Val(lstrYY) = 9999 Then 'Se separa el if en
tres ya que es más rápido su ejecucuión
If lintMes = 12 Then
If lintDia = 31 Then lfstrFechaValida =
5 : Exit Function
End If
End If
'Valida el día de acuerdo a la fecha
If lstrDia > DatePart("d", DateAdd("d", -1,
DateAdd("m", 1, lintMes & "/" & lstrYY))) Then
lfstrFechaValida = 1 : Exit Function
'ldtmPrueba = lstrDia & "/" & lintMes & "/" &
lstrYY
lfstrFechaValida = lstrDia & "/" & lstrMes & "/"
& lstrYY
Exit Function
'errFechaValida:
Err.Clear()
lfstrFechaValida = 5
End Function
Private Sub mpFechaInvalida(ByVal lintError As
Integer)
Dim lstrTexto As String 'Asigna el texto ha
desplegar en el mensaje de errores
Select Case lintError
Case 1 : lstrTexto = "Día inválido."
Case 2 : lstrTexto = "Mes inválido."
Case 3 : lstrTexto = "El Año debe ser mayor a
1753."
Case Is > 3 : lstrTexto = "Fecha inválida."
End Select
MsgBox(lstrTexto, vbCritical + vbOKOnly, "Aviso")
End Sub
Private Sub txtFini_LostFocus(ByVal sender As Object,
ByVal e As System.EventArgs) Handles txtFini.LostFocus
Dim lstrPaso As String 'Variable de paso
'Verifica que la fecha capturada en el txt_Fecha
sea válida
'Despliega un mensaje informando si; el día,mes o
año no son correctos
Dim lintRetorno As Integer 'Contiene el estado de
retorno de validación de la fecha
If sender.Text = "" Then Exit Sub
lstrPaso = lfstrFechaValida(sender.Text)
If Len(lstrPaso) < 2 Then
lintRetorno = Val(lstrPaso)
Call mpFechaInvalida(lintRetorno)
sender.Focus()
Exit Sub
End If
sender.Text = lstrPaso
End Sub
Private Sub txtFini_KeyPress(ByVal sender As Object,
ByVal e As System.Windows.Forms.KeyPressEventArgs)
Handles txtFini.KeyPress
'Dim sCar As String
'sCar = e.KeyChar
''Validar entrada
'If sCar <> ControlChars.Back And Not
(Char.IsDigit(e.KeyChar)) And sCar <> "/" Then
' e.Handled = True
'End If
e.Handled = Not mfblnCarValido(sender, e)
End Sub
Private Function mfblnCarValido(ByVal sender As
Object, ByVal e As
System.Windows.Forms.KeyPressEventArgs) As Boolean
'valida si el caracter es valido
Dim lintLoncadena As Integer 'Longitud de la
cadena captura antes del último caracter
Dim lintCaracter As Integer 'Ascii del Caracter
digitado
Dim lblnAcepta As Boolean 'Bandera que acepta
el caracter pulsado
Dim lintAntCar As Integer 'Último caracter
pulsado
Dim lstrCar As String 'Caracter pulsado
Dim lintRetorno As Integer 'Respuesta de funcion
Dim lstrPaso As String 'Var de paso
Dim lintPos As Integer 'Determina la
posición de inserción
Dim lstrFechaComparada As String 'Nombre del
objeto fecha con que se compara
Dim intKeyAscii As Integer
intKeyAscii = Asc(e.KeyChar)
lintPos = -1 'Inicilaiza la var con bandera
negativa (sin selección)
If intKeyAscii = 8 Then Return True : Exit
Function
If sender.SelectionLength > 0 Then
lintPos = sender.SelectionStart
sender.Text = Mid(sender.Text, 1,
sender.SelectionStart)
End If
'Existe texto seleecionado y se determina el
punto de inserción
If lintPos > -1 Then sender.SelectionStart =
lintPos
lstrCar = UCase(Chr(intKeyAscii))
lintCaracter = Asc(lstrCar)
lintLoncadena = Len(sender.Text)
lblnAcepta = True
If lintLoncadena > 1 Then lintAntCar = Asc(Mid
(sender.Text, lintLoncadena, 1))
Select Case lintLoncadena 'Validación de dia
Case Is <= 1
lblnAcepta = F_blnEsNumero(lintCaracter)
If lblnAcepta And lintLoncadena = 1 Then
sender.Text = sender.Text & lstrCar
& "/" : SendKeys.Send("{END}") : lblnAcepta = False
End If
Case 2
If lintCaracter <> 47 Then 'Tercer
caracter pulsado
lblnAcepta = False
If F_blnEsNumero(lintCaracter) Or _
F_blnEsLetra(lintCaracter)
Then 'Número o letra pulsado
sender.Text = sender.Text & "/" &
lstrCar : SendKeys.Send("{END}")
lblnAcepta = False
End If
Else
sender.Text = sender.Text & "/" :
sender.SelectionStart = 0 : SendKeys.Send("{END}") :
lblnAcepta = False
End If
Case 3
lblnAcepta = F_blnEsNumero
(lintCaracter) 'Se pulsa numero
If Not lblnAcepta Then
If F_blnEsLetra(lintCaracter) Then
sender.Text = sender.Text &
lstrCar : SendKeys.Send("{END}") : lblnAcepta = False
End If
Else
sender.Text = sender.Text & lstrCar :
SendKeys.Send("{END}") : lblnAcepta = False
End If
Case 4
lblnAcepta = F_blnEsNumero(lintCaracter)
And _
F_blnEsNumero
(lintAntCar) 'Se pulsa numero
If lblnAcepta Then sender.Text =
sender.Text & lstrCar & "/" : lblnAcepta = False :
SendKeys.Send("{END}")
If Not lblnAcepta Then
lblnAcepta = (F_blnEsLetra
(lintCaracter) And F_blnEsLetra(lintAntCar))
If lblnAcepta Then sender.Text =
sender.Text & lstrCar : lblnAcepta = False : SendKeys.Send
("{END}")
End If
Case 5
If lintCaracter <> 47 Then 'Tercer
caracter pulsado
lblnAcepta = False
If F_blnEsNumero(lintCaracter) And
F_blnEsNumero(lintAntCar) Then
sender.Text = sender.Text & "/" &
lstrCar : SendKeys.Send("{END}")
End If
If F_blnEsLetra(lintCaracter)
Then 'Letra pulsado
If F_blnEsLetra(lintAntCar) Then
sender.Text = sender.Text & lstrCar & "/" : SendKeys.Send
("{END}")
End If
Else
lblnAcepta = F_blnEsNumero(lintAntCar)
End If
Case 6
If lintCaracter <> 47 Then 'Tercer
caracter pulsado
lblnAcepta = False
If F_blnEsNumero(lintCaracter) Then
sender.Text = sender.Text & IIf
(lintAntCar <> 47, "/", "") & lstrCar : SendKeys.Send
("{END}")
End If
Else
lblnAcepta = F_blnEsLetra(lintAntCar)
End If

Case Is > 6
lblnAcepta = F_blnEsNumero(lintCaracter)
End Select
If lintLoncadena = 10 Then
If F_blnEsNumero(Asc(Mid(sender.Text, 4, 1)))
And F_blnEsNumero(Asc(Mid(sender.Text, 5, 1))) Then
lblnAcepta = False
End If
Return lblnAcepta

End Function

*******fin de rutinas necesarias para el manejo de fechas
******inicio eventos del objeto textbox(fecha)*****

Private Sub txtFFin_KeyPress(ByVal sender As Object,
ByVal e As System.Windows.Forms.KeyPressEventArgs)
Handles txtFFin.KeyPress
e.Handled = Not mfblnCarValido(sender, e)
End Sub

Private Sub txtFFin_LostFocus(ByVal sender As Object,
ByVal e As System.EventArgs) Handles txtFFin.LostFocus
Dim lstrPaso As String 'Variable de paso
'Verifica que la fecha capturada en el txt_Fecha
sea válida
'Despliega un mensaje informando si; el día,mes o
año no son correctos
Dim lintRetorno As Integer 'Contiene el estado de
retorno de validación de la fecha
If sender.Text = "" Then Exit Sub
lstrPaso = lfstrFechaValida(sender.Text)
If Len(lstrPaso) < 2 Then
lintRetorno = Val(lstrPaso)
Call mpFechaInvalida(lintRetorno)
sender.Focus()
Exit Sub
End If
sender.Text = lstrPaso

End Sub
******fin eventos del objeto textbox(fecha)********
Respuesta Responder a este mensaje
#4 Mask Edit
15/09/2004 - 00:15 | Informe spam
El control Mask Edit se tiene que agregar como un control
extra y que pertenece al grupo de los Componentes COM.

Para obtenerlo debe segir estos pasos:

Dar click derecho sobre la ficha de Windows Forms
Seleccionar Agregar o quitar elementos...
En la ventana de Personalizar cuadro de herramientas dar
click en la opción de Componentes COM
Buscar y seleccionar la casilla que tiene el control
Microsoft Masked Edit Control, version 6.0.
y dar click en Aceptar.

Finalmente veras que al final de lista de controles
Windows Forms aparecerá este control del Mask Edit.

Pero lo mejor es utilizar los nuevos controles de ofrece
vb.net (DateTimePicker) que están hechos para ese
propósito.
Además de que tienen mejor apariencia que un TextBox con
mascára.
Claro es cuestión de gustos.

Saludos a todos, mi problema es que quiero dar de alta un
campo del tipo fecha, pero no me aparecen las barra
divisorias de la fecha " / / " dentro del textbox para
ser llenadas. Ya busque en las propiedades del textbox y
no las encontre, como puedo solucionarlo?
muchisimas gracias.
.

Respuesta Responder a este mensaje
#5 Pedro Luna Montalvo, MVP
15/09/2004 - 04:23 | Informe spam
Si sirve de consuelo momentaneo, Framework 2.0 si incluira un control de
mascaras



"Kevin" escribió en el mensaje
news:0e4401c49a9b$7ac27830$
Saludos a todos, mi problema es que quiero dar de alta un
campo del tipo fecha, pero no me aparecen las barra
divisorias de la fecha " / / " dentro del textbox para
ser llenadas. Ya busque en las propiedades del textbox y
no las encontre, como puedo solucionarlo?
muchisimas gracias.
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida