VB6 - Evento Validate - formatando o número do telefone.
Você pode usar o evento Validate do controle TextBox para fazer a formatação da entrada de dados feitas pelo usuário. Como exemplo vou mostrar como formatar o número do telefone informado em uma caixa de texto. ( O evento presente somente na versao 6 do VB )
1- Inicie um novo projeto no VB e no formulário padrão insira duas labels duas caixas de texto e um botão de comando, conforme layout abaixo:
O layout do formulário | A entrada inicial | O valor formatado |
2- A seguir insira no evento Validate do controle text1.text o seguinte código:
Private Sub Text1_Validate(keepfocus As Boolean) If Not IsNumeric(Text1.text) Or Len(Text2.text) < 4 Then keepfocus = True MsgBox "Informe um valor valido !", vbInformation, "Formatando telefone" Exit Sub End If Text1.text = FormataTelefone(Text1.text) End Sub |
A função que realiza a formatação é a seguinte: ( fique a vontade para ajustá-la a seu caso...)
Function FormataTelefone(ByVal text As String) As String Dim i As Long ' ignora vazio If Len(text) = 0 Then Exit Function 'verifica valores invalidos For i = Len(text) To 1 Step -1 If InStr("0123456789", Mid$(text, i, 1)) = 0 Then text = Left$(text, i - 1) & Mid$(text, i + 1) End If Next ' ajusta a posicao correta If Len(text) <= 7 Then FormataTelefone = Format$(text, "!@@@-@@@@") ElseIf Len(text) > 7 And Len(text) <= 9 Then FormataTelefone = Format$(text, "!(@@) @@@-@@@@") ElseIf Len(text) > 9 Then FormataTelefone = Format$(text, "!(@@) @@@@-@@@@") End If End Function |
Se o usuário não informar um valor numérico ou um valor menor que 4 caracteres -
If Not IsNumeric(Text1.text) Or Len(Text2.text) < 4 Then
o foco é mantido no controle e uma mensagem é exibida para o usuário:
keepfocus = True
MsgBox "Informe um valor valido !", vbInformation,
"Formatando telefone"
Exit Sub
Se o valor estiver dentro do esperado , a função FormataTelefone é invocada e a formatação ocorre como na figura mostrada acima.
Até mais...