MASK COM DATA
Não consigo configurar um campo MASK DATA Ex: __/__/____ para que seja obrigatório para quando clico no botão salvar ele me de a mensagem [Ô]Este Campo é Obrigatório[Ô] já procurei aqui, mas nenhum modelo foi satisfatório.
Agradeço a uma ajuda
MessageBox.Show([Ô]Data de nascimento Inválida.[Ô], [Ô]Gravar[Ô], _
MessageBoxButtons.OK)
MaskedTextBox_datanasc.Focus()
Exit Sub
ElseIf CDate(MaskedTextBox_datanasc.Text) >= _
DateAdd(DateInterval.Year, -18, Now.Date) Then
MessageBox.Show([Ô]menor de 18 anos ñ pode.[Ô], [Ô]Gravar[Ô], _
MessageBoxButtons.OK)
MaskedTextBox_datanasc.Focus()
Exit Sub
End If
Obrigado pela ajuda, mas não funcionou, e não é isso que estou procurando, talvez eu tenha me expressado errado. O que eu quero é o seguinte.
Quando abro meu formulário no campo MaskDataRecebimento, ele me apresenta __/__/____ que esta configurado se eu deixar em branco, e quando clico no botão salvar, me apresenta uma mensagem [Ô]Este Campo È Obrigatório[Ô] e me retorna ao MaskDataRecebimento
No KeyDown do Campo data faço isso com a Função OpcaoFormata.ForData ja vai formatando quando vou digitando...
Private Sub txtData_KeyDown(sender As Object, e As System.Windows.Forms.KeyEventArgs) Handles txtData.KeyDown
Try
Dim cl As New Funcoes
If e.KeyCode <> Keys.Back Then
cl.Formata(Funcoes.OpcaoFormata.ForData, txtData)
End If
Catch ex As Exception
TratarErro([Ô]frmLancamento[Ô], [Ô]txtData_KeyDown[Ô], Err.Number, Err.Description, Erl)
End Try
End Sub
No KeyPress faço isso para aceitar somente Numeros...
Private Sub txtData_KeyPress(sender As Object, e As System.Windows.Forms.KeyPressEventArgs) Handles txtData.KeyPress
Try
Dim KeyAscii As Short = CShort(Asc(e.KeyChar))
KeyAscii = CShort(SoNumeros(KeyAscii, False))
If KeyAscii = 0 Then
e.Handled = True
End If
Catch ex As Exception
TratarErro([Ô]frmLancamento[Ô], [Ô]txtData_KeyPress[Ô], Err.Number, Err.Description, Erl)
End Try
End Sub
E a função OpcaoFormata fica na Classe Funcoes que eu Criei assim:
Public Class Funcoes
Public Enum OpcaoFormata
ForCep = 1
ForData = 2
ForCNPJ = 3
ForCPF = 4
ForTelefone = 5
ForCFOP = 6
End Enum
Public Sub Formata(ByVal Opcao As OpcaoFormata, ByVal txtTexto As DevExpress.XtraEditors.TextEdit)
Try
Select Case Opcao
Case OpcaoFormata.ForCFOP
If Len(txtTexto.Text) = 1 Then
txtTexto.Text = txtTexto.Text & [Ô].[Ô]
txtTexto.SelectionStart = Len(txtTexto.Text) + 1
End If
txtTexto.Properties.MaxLength = 5
Case OpcaoFormata.ForData
If Len(txtTexto.Text) = 2 Or Len(txtTexto.Text) = 5 Then
txtTexto.Text = txtTexto.Text & [Ô]/[Ô]
txtTexto.SelectionStart = Len(txtTexto.Text) + 1
End If
txtTexto.Properties.MaxLength = 10
Case OpcaoFormata.ForCep
If Len(txtTexto.Text) = 2 Then
txtTexto.Text = txtTexto.Text & [Ô].[Ô]
txtTexto.SelectionStart = Len(txtTexto.Text) + 1
ElseIf Len(txtTexto.Text) = 6 Then
txtTexto.Text = txtTexto.Text & [Ô]-[Ô]
txtTexto.SelectionStart = Len(txtTexto.Text) + 1
End If
txtTexto.Properties.MaxLength = 10
Case OpcaoFormata.ForCNPJ
If Len(txtTexto.Text) = 2 Or Len(txtTexto.Text) = 6 Then
txtTexto.Text = txtTexto.Text & [Ô].[Ô]
txtTexto.SelectionStart = Len(txtTexto.Text) + 1
End If
If Len(txtTexto.Text) = 10 Then
txtTexto.Text = txtTexto.Text & [Ô]/[Ô]
txtTexto.SelectionStart = Len(txtTexto.Text) + 1
End If
If Len(txtTexto.Text) = 15 Then
txtTexto.Text = txtTexto.Text & [Ô]-[Ô]
txtTexto.SelectionStart = Len(txtTexto.Text) + 1
End If
txtTexto.Properties.MaxLength = 18
Case OpcaoFormata.ForCPF
If Len(txtTexto.Text) = 3 Then
txtTexto.Text = txtTexto.Text & [Ô].[Ô]
txtTexto.SelectionStart = Len(txtTexto.Text) + 1
ElseIf Len(txtTexto.Text) = 7 Then
txtTexto.Text = txtTexto.Text & [Ô].[Ô]
txtTexto.SelectionStart = Len(txtTexto.Text) + 1
ElseIf Len(txtTexto.Text) = 11 Then
txtTexto.Text = txtTexto.Text & [Ô]-[Ô]
txtTexto.SelectionStart = Len(txtTexto.Text) + 1
End If
txtTexto.Properties.MaxLength = 14
Case OpcaoFormata.ForTelefone
[ô]If Len(txtTexto.Text) = 0 Then
[ô]txtTexto.Text = txtTexto.Text & [Ô]([Ô]
[ô]txtTexto.SelectionStart = Len(txtTexto.Text) + 1
If Len(txtTexto.Text) = 2 Then
txtTexto.Text = txtTexto.Text & [Ô] [Ô]
txtTexto.SelectionStart = Len(txtTexto.Text) + 1
ElseIf Len(txtTexto.Text) = 8 Then
txtTexto.Text = txtTexto.Text & [Ô]-[Ô]
txtTexto.SelectionStart = Len(txtTexto.Text) + 1
End If
txtTexto.Properties.MaxLength = 13
End Select
Catch ex As Exception
TratarErro([Ô]Classe Funcões[Ô], [Ô]Formata[Ô], Err.Number, Err.Description, Erl)
End Try
End Sub
End Class
é bem mais Simples de usar e também tem outras Formações como CPF, CEP, CNPJ, Telefone e CFOP...
dai para que seu Campo seja Obrigatório voce coloca no Botao Salvar
if Trim(txtData.Text) = [Ô][Ô] then
[Ô]Campo Obrigatorio
end if
Fiz tudo como voçe explicou, mas na Classe esta me dando erros:
1º errro -> Public Sub Formata(ByVal Opcao As OpcaoFormata, ByVal txtTexto As DevExpress.XtraEditors.TextEdit)
2º erro -> TratarErro([Ô]Classe Funcões[Ô], [Ô]Formata[Ô], Err.Number, Err.Description, Erl)
e no Formulario
Private Sub txtData_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles txtData.KeyDown
1º) erro ->TratarErro([Ô]Classe Funcões[Ô], [Ô]Formata[Ô], Err.Number, Err.Description, Erl)
e no Formulario
Private Sub txtData_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles txtData.KeyPress
1º) erro -> KeyAscii = CShort(SoNumeros(KeyAscii, False))
2º) erro -> TratarErro([Ô]Classe Funcões[Ô], [Ô]Formata[Ô], Err.Number, Err.Description, Erl)
Obs troquei
TratarErro([Ô]frmLancamento[Ô], [Ô]txtData_KeyDown[Ô], Err.Number, Err.Description, Erl) pelo meu frm
TratarErro([Ô]frmContas[Ô], [Ô]txtData_KeyDown[Ô], Err.Number, Err.Description, Erl)
Citação::
F001E
Fiz tudo como voçe explicou, mas na Classe esta me dando erros:
1º errro -> Public Sub Formata(ByVal Opcao As OpcaoFormata, ByVal txtTexto As DevExpress.XtraEditors.TextEdit)
2º erro -> TratarErro([Ô]Classe Funcões[Ô], [Ô]Formata[Ô], Err.Number, Err.Description, Erl)
e no Formulario
Private Sub txtData_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles txtData.KeyDown
1º) erro ->TratarErro([Ô]Classe Funcões[Ô], [Ô]Formata[Ô], Err.Number, Err.Description, Erl)
e no Formulario
Private Sub txtData_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles txtData.KeyPress
1º) erro -> KeyAscii = CShort(SoNumeros(KeyAscii, False))
2º) erro -> TratarErro([Ô]Classe Funcões[Ô], [Ô]Formata[Ô], Err.Number, Err.Description, Erl)
Obs troquei
TratarErro([Ô]frmLancamento[Ô], [Ô]txtData_KeyDown[Ô], Err.Number, Err.Description, Erl) pelo meu frm
TratarErro([Ô]frmContas[Ô], [Ô]txtData_KeyDown[Ô], Err.Number, Err.Description, Erl)
CRCJ..o TrataErro é função que eu fiz em outra Classe, nesse caso você pode colocar um messageBox para voce ae..
no ByVal txtTexto As DevExpress.XtraEditors.TextEdit voce faz assim ByVal txtTexto As System.Windows.Forms.TextBox pq o DevExpress é um componente que eu uso aki...
e a Funcao SoNumeros voce cria um Modulo e cola ela lá...segue a Funcao...
Function SoNumeros(ByVal Keyascii As Short, ByVal Valor As Boolean) As Short
Dim Retorno As Short = 0
Try
If Valor = True Then
If InStr([Ô]1234567890,[Ô], Chr(Keyascii)) = 0 Then
Retorno = 0
Else
Retorno = Keyascii
End If
Else
If InStr([Ô]1234567890,[Ô], Chr(Keyascii)) = 0 Then
Retorno = 0
Else
Retorno = Keyascii
End If
End If
Select Case Keyascii
Case 8
Retorno = Keyascii
Case 13
Retorno = Keyascii
Case 32
Retorno = Keyascii
End Select
Catch ex As Exception
MessaBox.Show([Ô]teste[Ô])
End Try
SoNumeros = Retorno
End Function
Citação:if MaskDataRecebimento.text = [Ô]__/__/____[Ô] then
MsgBox [Ô]Campo Obrigatório[Ô], VbQuestion, [Ô]Erro![Ô]
MaskDataRecebimento.focus
exit sub
endif
Ok funcionou corretamente, só que esta dando erro aqui:
Private Sub txtData_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles txtData.KeyPress
Try
Dim KeyAscii As Short = CShort(Asc(e.KeyChar))
KeyAscii = CShort(SoNumeros(KeyAscii, False)) -> SoNumeros
If KeyAscii = 0 Then
e.Handled = True
End If
Catch ex As Exception
[ô]TratarErro([Ô]frmContas[Ô], [Ô]txtData_KeyPress[Ô], Err.Number, Err.Description, Erl)
End Try
End Sub
Obrigado, mas tentei isso e não deu certo
Citação::
F001E
Ok funcionou corretamente, só que esta dando erro aqui:
Private Sub txtData_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles txtData.KeyPress
Try
Dim KeyAscii As Short = CShort(Asc(e.KeyChar))
KeyAscii = CShort(SoNumeros(KeyAscii, False)) -> SoNumeros
If KeyAscii = 0 Then
e.Handled = True
End If
Catch ex As Exception
[ô]TratarErro([Ô]frmContas[Ô], [Ô]txtData_KeyPress[Ô], Err.Number, Err.Description, Erl)
End Try
End Sub
Qual seria esse Erro ?...