Controlando a digitação no objeto Edit

 

Quando alguém esta digitando algum valor que posteriormente será utilizado para cálculo, alguns cuidados são necessários. Essa dica tem como objetivo, mostrar como controlar a digitação de caracteres no Edit.

Coloque um objeto Edit no form e no seu evento OnKeypress escreva o seguinte código:

 

if not(key in ['0'..'9','.',',',#8,#13]) then

  key := #0;

if key in [',','.'] then

  key := DecimalSeparator;

if key = DecimalSeparator then

  if pos(key,TEdit(Sender).Text) <> 0 then

    key := #0;

 

Explicando o código

if not(key in ['0'..'9','.',',',#8,#13]) then

    key := #0;

 

No código acima, se algum número, ponto, vírgula, BackSpace ou Enter for digitado, então pode passar normalmente, caso contrário a tecla pressionada é ignorada.

 

if key in [',','.'] then    

  key := DecimalSeparator;

 

No código acima, se digitado ponto ou vírgula, assume como separador decimal.

 

if key = DecimalSeparator then

  if pos(key,TEdit(Sender).Text) <> 0 then

    key := #0;

 

No código acima, o separador decimal só pode ser digitado uma única vez, na tentativa de uma segunda digitação ignora-se o símbolo.

Observem que o mais importante aqui é o conceito utilizado, o fato de se interceptar os caracteres digitados pelo usuário e poder filtrar esses caracteres para evitar uma entrada de dados inconsistente.