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.