smeagoulh 0 #1 Posted March 28, 2008 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 #2 Posted March 28, 2008 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 #3 Posted August 14, 2009 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