MASK COM DATA

CRCJ 09/05/2013 11:21:12
#423178
Ola a todos
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
FELLIPEASSIS 09/05/2013 13:35:40
#423187
If IsDate(MaskedTextBox_datanasc.Text) = False Then
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
CRCJ 09/05/2013 15:01:45
#423197
FELLIPEASSIS
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
F001E 09/05/2013 16:03:00
#423202
Resposta escolhida
Eu particularmente não gosto do MaskTextBox, é cheio de frescura e dá uns erros lokos....uso o Text normal e quando vou digitando a Data ja formata automaticamente...assim :

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
CRCJ 09/05/2013 17:13:20
#423206
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)
F001E 09/05/2013 17:29:26
#423208
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

MAXGUIMEL 09/05/2013 18:40:57
#423212
Eu achoque você que que faça isso :

Citação:

if MaskDataRecebimento.text = [Ô]__/__/____[Ô] then
MsgBox [Ô]Campo Obrigatório[Ô], VbQuestion, [Ô]Erro![Ô]
MaskDataRecebimento.focus
exit sub
endif

CRCJ 10/05/2013 09:30:35
#423237
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
CRCJ 10/05/2013 09:32:11
#423238
MAXGUIMEL
Obrigado, mas tentei isso e não deu certo
F001E 10/05/2013 09:35:05
#423239
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 ?...
CRCJ 10/05/2013 09:44:28
#423241
Error 4 [ô]SoNumeros[ô] is a type and cannot be used as an expression. C:\Arquivos de programas\VB-NET-Projetos Aproveitáveis\CadastroVB\frmContas.vb 1209 31 CadastroVB
Página 1 de 2 [11 registro(s)]
Tópico encerrado , respostas não são mais permitidas