VB - formatação de dados com MaskedBox
Geralmente em formulários de entrada de dados queremos além de fazer a validação dos dados preparar uma formatação de forma a orientar o usuário na entrada de certos valores padrões como : CEP , Telefone , CIC , RG , etc.
Existem muitos caminhos que você pode seguir para conseguir este objetivo , neste artigo eu vou falar do caminho mais fácil , usar um controle pronto : o controle MaskEdBox.
Geralmente você usa o controle MaskEdBox quando precisa usar uma máscara para formatar a entrada de valores com formatos conhecidos.
Os caracteres mais usados para a configuração da máscara são :
Já vi muita gente apanhando deste controle . Uma dica que você não deve esquecer é que você deve sempre definir a propriedade PromptInclude deste controle como False se estiver usando o controle no modo vinculado a dados. Se não fizer isto você vai ter um erro de dados a cada vez que você incluir um novo registro na tabela ou tentar salvar ou ler o registro que possui um valor null no campo vinculado ao controle.
Você define a máscara na propriedade Mask do controle digitando os caracteres de formatação para o valor que desejar.
Para definir uma máscara para CGC , digite "##.###.###/####-##" para a propriedade Mask.
Para definir uma máscara para CEP , fazemos : "#####-###" na propriedade Mask.
Para valores monetários usamos a propriedade Format onde indicamos : "#,##0.00;(#,##0.00)" - A primeira parte vale para valores positivos e a segunda (depois do ;) vale para valores negativos. Após isto devemos informar em Mask "999.999.999,99".
Para definir o formato para datas usamos : "dd-mm-yyyy" na propriedade Format e : "99/99/9999" na propriedade Mask.
Os valores para Format são exibidos nas propriedades do controle:
Outra propriedade importante é a propriedade PromptChar , onde você define um caractere para prompt durante a execução. O padrão é sublinha (_) mas você pode usar um espaço em branco. (Se definirmos PromptInclude como True este caractere será incluído como parte do código digitado)
Se você tentar limpar o texto do controle diretamente usando masked1.text = "" não vai conseguir . Para fazer isto você tem que remover a máscara . O código pode ser :
Temp = MaskEd1.Mask MaskEd1.Mask = "" MaskEd1.Text = "" MaskEd.Mask = Temp
A seguir temos abaixo um formulário onde usamos o controle MaskedBox para formatar alguns valores.
Você pode estender a funcionalidade do controle usando código para trabalhar junto com ele nos eventos Keypress e KeyUp. Abaixo temos o código que permite bloquear e desbloquear um controle MaskedBox (recebi de um colaborador)
Option Explicit Private lockme As Boolean Private prevtext As String Private Sub cmdBloquear_Click() lockme = Not lockme If lockme Then cmdBloquear.Caption = "Desbloquear" Else cmdBloquear.Caption = "Bloquear" End If MaskEdBox1.SetFocus End Sub Private Sub MaskEdBox1_Change() Static doing As Boolean If doing Then Exit Sub doing = True If lockme = True Then MaskEdBox1.Text = prevtext doing = False Exit Sub End If prevtext = MaskEdBox1.Text doing = False End Sub |
Até a próxima...
José Carlos Macoratti