Ir ao conteúdo
  • Cadastre-se

Máscara automática ao digitar


Posts recomendados

Olá LeandroSk8,

Não é necessário a utilização de função....

Se estiver usando um TEdit, vá até o Object Inspector - Properties - você vai encontrar uma opção chamada PasswordChar, lá você coloca o caracter que quer que apareça ao digitar qualquer texto.

Faça um teste e poste novamente pra saber se deu certo, ok!!!!!

Abraços :rolleyes:

Link para o comentário
Compartilhar em outros sites

Boa tarde LeandroSk8!

Você também pode usar o componente "MaskEdit(Mask)" que fica na aba "Additional". com ele você pode, por exemplo, colocar as barras automaticamente em uma data utilizando a propriedade "EditMask".

Para utilizar o MaskEdit para digitar uma data, a propriedade "EditMask" ficaria assim: 00/00/000. (Se usa o 0 aonde quer que fique o espaço para o usuario digitar).

Faça os teste e me avise se precissar de alguma coisa!

Link para o comentário
Compartilhar em outros sites

  • 2 semanas depois...

Obrigado Paula_Moura

Mas o que eu preciso realmente é que ao digitar fosse aparecendo pontos, traços ou virgulas. Por exemplo :

Telefone 1111111111 ficasse assim (11) 1111-1111

Mas se eu digitar o primeiro número "1" ficasse assim (1 , o segundo numero "(11" ficasse assim (11) e assim por diante.

Não sei se me expressei bem, mas agradeço qualquer ajuda.

Link para o comentário
Compartilhar em outros sites

Ola I.Rutkoski,

acho q você ja deve ter visto em alguns sites campos de digitacao q coloca os caracteres

automaticamente ao digitar.

o q eu gostaria é que ao digitar "1" ficasse assim "(1" e nao assim "(1_) ____-____" , ao

digitar "11" ficasse assim "(11" e nao assim "(11) ____-____", ao digitar "111" ficasse

assim "(11) 1" e nao assim "(11) 1___-____" e assim por diante.

Agradeço qualquer ajuda.

Link para o comentário
Compartilhar em outros sites

  • Membro VIP

Olá!

Você precisa trabalhar com o evento OnChange do TEdit (clique duplo nele), ou ainda com o OnKeyDown

Veja o código completo com o OnChange, para o que você pediu:

procedure TForm1.Edit1Change(Sender: TObject);
begin
if (Length(Edit1.Text) = 1) then
begin
if Edit1.Text[1] = '(' then
Edit1.Text := ''
else
begin
Edit1.Text := '('+Edit1.text;
Edit1.SelStart := Length(Edit1.text);
end;
end;
if Length(Edit1.Text) = 3 then
begin
Edit1.Text := Edit1.text+') ';
Edit1.SelStart := Length(Edit1.text);
end;
if Length(Edit1.Text) = 9 then
begin
Edit1.text := Edit1.text+'-';
Edit1.SelStart := Length(Edit1.Text);
end;
end;

Entretanto, como você deve perceber ao testar, se você apagar provavelmente vai bugar todo, então é por isso que essas masks enchem.. mas aí deixo para você resolver..

PS: Se você reparar ja ajeitei o problema do backspace até na primeira mascara (o '(') !

Abraços!

Link para o comentário
Compartilhar em outros sites

  • 4 semanas depois...

Olá amigo Rog.Lucas,

Consegui resolver assim:

procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
if not (Key in [#8]) then begin
if not (Key in ['0'..'9']) then Key := #0;
if (Length(Edit1.Text) = 1) then begin
if Edit1.Text[1] = '(' then Edit1.Text := '' else begin
Edit1.Text := '('+Edit1.text;
Edit1.SelStart := Length(Edit1.text);
end;
end;
if Length(Edit1.Text) = 3 then begin Edit1.Text := Edit1.text+') ';
Edit1.SelStart := Length(Edit1.text);
end;
if Length(Edit1.Text) = 9 then begin Edit1.text := Edit1.text+'-';
Edit1.SelStart := Length(Edit1.Text);
end;
end;
end;

Se puder dar uma melhorada te agradeço desde já.

valeu.

Link para o comentário
Compartilhar em outros sites

  • 11 anos depois...

Boa tarde, srs. Já usei Delphi e gostei muito dele. Infelizmente, ele é tão travado que, mesmo diante das possibilidades que ele abre, fica difícil de desenvolver programas flexíveis com ele.

O exemplo da máscara em um campo de entrada é clássico.

Um problema que tive e que me deixava irritado, por exemplo, era ter que colocar a máscara de acordo com a personalidade jurídica: se pessoa física, a máscara de CPF, se jurídica, CNPJ.

Fazer essa alteração em tempo de execução é praticamente impraticável.

Além disso, o desenvolvedor ainda esbarra no tipo de solução desse post, com um método (se é que podemos chamar isso) e 15 linhas.

Dá pra fazer isso com expressão regular, mas o Delphi, em qualquer versão que seja, desestimula o desenvolvedor de querer saber o que é isso justamente porque cria esses "componentes" empacotados self-service que dão a ilusão de controle, mas basta querer fazer algo que tenha que ser realmente dinâmico que você vai ter sérios problemas.

Por isso deixei de programar em Delphi.

Prefiro, acreditem, PHP, Python e até JavaScript nas suas diversas ramificações.

Abraços.

Link para o comentário
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...