Jump to content
Sign in to follow this  
smeagoulh

[Dica]TEdits apenas para números

Recommended Posts

smeagoulh    0
smeagoulh

Bom, uma dica bem simples que decidi bota de uma vez porque costuma enche o saco a falta dela quando forem usados TEdits que sirvam apenas para números (no caso daqueles que não gostam do TSpinEdit).

 

Ela usa um função simples, que formata uma string, deixando apenas os números que ela contém e removendo os caracteres indevidos, já convertendo para integer:

 

function FormatToInt(str:string):integer;

var

i:integer;

buff:string;

begin

Result:=0;

buff:='';

for i:=1 to Length(str) do

if str in ['0'..'9'] then

buff:=buff+str;

if buff<>'' then

Result:=StrToInt(buff);

end;

 

Copie esta função logo após "implementation" e "{$R *.dfm}".

 

Agora, na TEdit que for usar esta dica, adicione o seguinte código no evento OnChange:

if TEdit(Sender).Text<>'' then

TEdit(Sender).Text:=IntToStr(FormatToInt(TEdit(Sender).text));

Repare que você pode usar a função OnChange de apenas 1 TEdit para todos os outros nos quais você quizer usar esta dica, economizando muito código e memória.

Pronto, mas cuide, porque se você digitar um número grande demais, terá problemas com o erro comum do Delphi.

Share this post


Link to post
Share on other sites
Black Gooden    0
Black Gooden

Novamente aprovado e muito Bom.

smeagoulh é de pessoas assim que necessitamos nesta secção ;)

Parabéns.

Share this post


Link to post
Share on other sites
mano limao    0
mano limao

eu ja tinha desenvolvido esta:

 

procedure SohNumint(var key:char);

begin

if not (Key in['0'..'9',Chr(8)]) then

key:= #0

else

key:=key;

end;

 

e pra qm ta precisando tbm... uma function que deixa os num float so com 2 casas...

 

function real_DuasCasas(valor:real):real;

begin

Result:=Round(valor*100)/100;

end;

 

PS: usar o sohnumin no evento on key press... botar a key no parametro e maravilha..

e sim, n precisar ser uma função pq a variavel vai ser tratada dentro da propria procedure...

Share this post


Link to post
Share on other sites

Please sign in to comment

You will be able to leave a comment after signing in



Sign In Now
Sign in to follow this  

  • Recently Browsing   0 members

    No registered users viewing this page.

×