Procedimento para serem usados em um componente Edit para evitar a digitação de virgula e só aceitar números.
No seu componente Edit coloque os dois códigos nos eventos OnChange e OnKeyPress.
procedure Tfrm_formulario.edt_valorChange(Sender: TObject);
var
s:string;
v:double;
I:integer;
begin
//1º Passo : se o edit estiver vazio, nada pode ser feito.
If (edt_valor.Text = emptystr) then
edt_valor.Text := '0,00';
//2º Passo : obter o texto do edit, SEM a virgula e SEM o ponto decimal:
s := '';
for I := 1 to length(edt_valor.Text) do
if (edt_valor.text[I] in ['0'..'9']) then
s := s + edt_valor.text[I];
//3º Passo : fazer com que o conteúdo do edit apresente 2 casas decimais:
v := strtofloat(s);
v := (v /100); // para criar 2 casa decimais
//4º Passo : Formata o valor de (V) para aceitar valores do tipo 0,10.
edt_valor.text := FormatFloat('###,##0.00',v);
edt_valor.SelStart := 0;
end;
procedure Tfrm_formulario.edt_valorKeyPress(Sender: TObject;
var Key: Char);
begin
if NOT (Key in ['0'..'9', #8, #9, #13]) then
begin
key := #0;
end;
//Função para posicionar o cursor sempre na direita
edt_valor.selstart := Length(edt_valor.text);
end;
Muito bom, parabéns.
ResponderExcluirTem como utilizar esse código no componente CurrencyEdit da biblioteca RX ?
Abraço
João
Ola!
ExcluirEu não sei, não conheço esse componente. Nunca usei.
Se você conseguir, por favor! me passe sua solução para eu publicar aqui no blog.
Estamos aqui para divulgar informações.
Abraços e boa programação
Emanuel
Tem como usar esse código para entrar com números negativos ?
ResponderExcluirPor exemplo saldo devedor em conta corrente.
Como fazer para digitar número negativo
Paulo Borba - pauloborba26@gmail.com