MASCARA DE DATA VB6

CAIOHSZA 31/10/2012 07:35:38
#413222
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?
FEDERHEN 31/10/2012 08:07:44
#413223
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
ROBIU 31/10/2012 08:40:17
#413226
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.
MARCELO.TREZE 31/10/2012 09:04:43
#413234
Resposta escolhida


[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

FFCOUTO 31/10/2012 09:56:47
#413243
Bom eu uso a seguinte função:

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


CAIOHSZA 31/10/2012 10:03:33
#413244
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

exemplo

Private 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