sexta-feira, 14 de outubro de 2011

Evitando digitação de virgula em componente Edit - Delphi

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;

3 comentários:

  1. Muito bom, parabéns.

    Tem como utilizar esse código no componente CurrencyEdit da biblioteca RX ?

    Abraço

    João

    ResponderExcluir
    Respostas
    1. Ola!

      Eu 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

      Excluir
  2. Tem como usar esse código para entrar com números negativos ?

    Por exemplo saldo devedor em conta corrente.

    Como fazer para digitar número negativo

    Paulo Borba - pauloborba26@gmail.com

    ResponderExcluir