Mostrando postagens com marcador OnChange. Mostrar todas as postagens
Mostrando postagens com marcador OnChange. Mostrar todas as postagens

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;