MASCARA DE DATA VB6
Já procurei e testei várias e não encontrei nenhuma que preste...
Alguém teria uma função para formatar data?
Colocar as / / / e também se o usuário digitar 31/10/12 ao mudar o foco para outro textbox a função já formata para 31/10/2012.
Algumas até funcionam mais não permite apagar os numeros corretamente.
Alguém pode ajudar?
Alguém teria uma função para formatar data?
Colocar as / / / e também se o usuário digitar 31/10/12 ao mudar o foco para outro textbox a função já formata para 31/10/2012.
Algumas até funcionam mais não permite apagar os numeros corretamente.
Alguém pode ajudar?
Coloque um componente MaskEdBox1 no form e configure as seguintes propriedades:
PromptChar = (substitua o default _ por um espaço)
Format = dd/mm/yyyy
Mask = 99/99/9999
PromptChar = (substitua o default _ por um espaço)
Format = dd/mm/yyyy
Mask = 99/99/9999
Baixe aqui o activeTextBox. Valida CPF, CNPJ, Data, Númericos, Ucase/Lcase, Foco no enter, etc . Também tem uma opção de máscara personalizada onde vc define a máscara. Para o seu caso, por exemplo, o controle já tem a opção de mask Date.
[txt-color=#007100][ô] depois de muitas dicas que estudei cheguei a esta conclusão
[ô] o código a seguir além de formatar corretamente a data ele
[ô] ainda permite que você digite apenas NUMEROS, e deixa a
[ô] tecla Backspace funcionando normalmente
[ô] Primeiro coloque em um módulo o seguinte código:[/txt-color]
Function CampoDATA(obj As Object, Keyasc As Integer)
If Not ((Keyasc >= Asc([Ô]0[Ô]) And Keyasc <= Asc([Ô]9[Ô])) Or Keyasc = 8) Then
Keyasc = 0
Exit Function
End If
If Keyasc <> 8 Then
If Len(obj.Text) = 2 Or Len(obj.Text) = 5 Then
obj.Text = obj.Text + [Ô]/[Ô]
obj.SelStart = Len(obj.Text)
End If
End If
End Function
[txt-color=#007100][ô] Para chamar afunção basta você colocar o seguinte código
[ô] no evento KeyPress do seu campo como mostrado abaixo:[/txt-color]
Private Sub txtData_KeyPress(KeyAscii As Integer)
[ô]
CampoDATA txtadmissao, KeyAscii
[ô]
End Sub
depois no lost focus coloque para formatar da maneira que desejar
exemplo
Private Sub txtData_LostFocus()
txtData.Text = Format(txtData.Text,[Ô]dd/mm/yyyy[Ô])
End Sub
Bom eu uso a seguinte função:
Para chamar a função use:
Ao invés de usar o evento LostFocus, seria melhor usar o Validate
Sub MaskEditDate(ByVal ctl As TextBox, KeyAscii As Integer)
Select Case KeyAscii
Case 8
Case 13: SendKeys [Ô]{TAB}[Ô]
Case 48 To 57
If ctl.SelStart = 2 Then ctl.SelText = [Ô]/[Ô]
If ctl.SelStart = 5 Then ctl.SelText = [Ô]/[Ô]
Case Else: KeyAscii = 0
End Select
End Sub
Para chamar a função use:
Private Sub txtData_KeyPress(KeyAscii As Integer)
MaskEditDate txtData, KeyAscii
End Sub
Ao invés de usar o evento LostFocus, seria melhor usar o Validate
Private Sub txtData_Validate(Cancel As Boolean)
If IsDate(txtData) Then txtData = Format(txtData, [Ô]dd/mm/yyyy[Ô])
End Sub
Citação::
[txt-color=#007100][ô] depois de muitas dicas que estudei cheguei a esta conclusão
[ô] o código a seguir além de formatar corretamente a data ele
[ô] ainda permite que você digite apenas NUMEROS, e deixa a
[ô] tecla Backspace funcionando normalmente
[ô] Primeiro coloque em um módulo o seguinte código:[/txt-color]Function CampoDATA(obj As Object, Keyasc As Integer)
If Not ((Keyasc >= Asc([Ô]0[Ô]) And Keyasc <= Asc([Ô]9[Ô])) Or Keyasc = 8) Then
Keyasc = 0
Exit Function
End If
If Keyasc <> 8 Then
If Len(obj.Text) = 2 Or Len(obj.Text) = 5 Then
obj.Text = obj.Text + [Ô]/[Ô]
obj.SelStart = Len(obj.Text)
End If
End If
End Function
[txt-color=#007100][ô] Para chamar afunção basta você colocar o seguinte código
[ô] no evento KeyPress do seu campo como mostrado abaixo:[/txt-color]Private Sub txtData_KeyPress(KeyAscii As Integer)
[ô]
CampoDATA txtadmissao, KeyAscii
[ô]
End Sub
depois no lost focus coloque para formatar da maneira que desejar
exemploPrivate Sub txtData_LostFocus()
txtData.Text = Format(txtData.Text,[Ô]dd/mm/yyyy[Ô])
End Sub
Sem dúvida a melhor resposta!!! =)
Tópico encerrado , respostas não são mais permitidas