Para deixar mais completa a informação passada no vídeo acima, vamos implementar uma rotina de formação onde poderemos variar a máscara, aumentando as possibilidades de formatação.
Notem que a rotina mostrada no vídeo serve para a formatação de um campo de valor, enquanto apresentada nesse artigo vai servir para campos tipo telefone, CPF, CNPJ, etc.
Vamos incluir a function abaixo, ela fará a formatação conforme a máscara que for informada:
function TTestEdit.ApplyMask(aMask, aValue: String): String;
Var
M, V : Integer;
Texto : String;
begin
Result := '';
Texto := '';
aMask := aMask.ToUpper;
for V := 0 to aValue.Length-1 do
if aValue.Chars[V] In ['0'..'9'] Then
Texto := Texto + aValue.Chars[V];
M := 0;
V := 0;
while (V < Texto.Length) And (M < aMask.Length) do
Begin
While aMask.Chars[M] <> '#' Do
Begin
Result := Result + aMask.Chars[M];
Inc(M);
End;
Result := Result + Texto.Chars[V];
Inc(M);
Inc(V);
End;
end;
para formatar um número de telefone, substituímos o evento OnTyping pelo a seguir:
procedure TTestEdit.Edit1Typing(Sender: TObject); begin TThread.Queue(Nil, Procedure begin Edit1.Text := ApplyMask('(##) #.####-####', Edit1.Text); Edit1.CaretPosition := Edit1.Text.Length; End); end;
Um formulário com 4 TEdits, cada um chamando seu evento OnTyping aplicando as máscaras ‘(##) #.####-####’, ‘###.###.###-##’, “###.###.###/####-##’ e ‘#-(#)-(#)-#’ se comportará como no vídeo abaixo:
Em um próximo artigo vamos pegar nosso aprendizado de hoje e criar o componente TMaskEdit, colocando-o na paleta de componentes do Delphi.
Até a próxima!