so aceitar numero no edit
como faço para que so aceite numero no edit
se for salvar letra mostre um chowmessage ('so aceita numero')
se for salvar letra mostre um chowmessage ('so aceita numero')
Alessandra
Curtidas 0
Melhor post
Wilson Junior
10/03/2011
Utilize esta rotina
Onde e como chamar:
Espero ter colaborado.
function Ret_Numero(Key: Char; Texto: string; EhDecimal: Boolean = False): Char;
begin
if not EhDecimal then
begin
{ Chr(8) = Back Space }
if not ( Key in ['0'..'9', Chr(8)] ) then
Key := #0
end
else
begin
if Key = #46 then
Key := DecimalSeparator
;
if not ( Key in ['0'..'9', Chr(8), DecimalSeparator] ) then
Key := #0
else
if ( Key = DecimalSeparator ) and ( Pos( Key, Texto ) > 0 ) then
Key := #0
;
;
end
;
Result := Key;
end;
Onde e como chamar:
{ Evento OnKeyPress do seu Edit }
procedure Edit1KeyPress(Sender: TObject; var Key: Char);
begin
Key := Ret_Numero( Key, Edit1.Text );
end;
Espero ter colaborado.
GOSTEI 1
Mais Respostas
Marco Salles
10/03/2011
Geralmente se faz isto utilizando o OnKeyPress do Edit.. Testando o Key e abortando , ou mostrado uma mensagem
caso o valor dele não seje numerico
GOSTEI 0
Alessandra
10/03/2011
eu gostaria de fazer com que
quando clicase no botão salvar ela aparecesse a mensagem ('aceita apenas numero')
se eu for colocar com o OnKeyPress ele altomaticamen aparece a mensagem
quando clicase no botão salvar ela aparecesse a mensagem ('aceita apenas numero')
se eu for colocar com o OnKeyPress ele altomaticamen aparece a mensagem
GOSTEI 0
Wilson Junior
10/03/2011
Para aparecer a mensagem ao estiver digitando, faça:
Espero ter colaborado.
{ Evento OnKeyPress do seu Edit }
procedure Edit1KeyPress(Sender: TObject; var Key: Char);
begin
Key := Ret_Numero( Key, Edit1.Text ); if Key = #0 then ShowMessage('Aceita apenas números') ;
end;
Espero ter colaborado.
GOSTEI 0
Alessandra
10/03/2011
se eu quizer que uma string so receba valor numerico? cmo faço?
GOSTEI 0
Marco Salles
10/03/2011
se eu quizer que uma string so receba valor numerico? cmo faço?
bem , não conheço ou não estou lembrando de nada Nativo do Delphi que se possa utilizar
então tente o método abaixo
procedure TForm1.Button2Click(Sender: TObject); var s:String; i:integer; begin s:=''; for I := 1 to length(edit1.Text) do if CharInSet(edit1.Text[i],['0'..'9']) then s:=s+edit1.Text[i]; showmessage(s); end;
GOSTEI 0
José
10/03/2011
Este tópico esta sendo fechado por inatividade. Se necessário, sinalizar para que seja reaberto ou abrir um novo.
GOSTEI 0
Guilherme Wiethaus
10/03/2011
Está correto o que nosso amigo acima falou e em muito eu utilizo estas linhas básicas de programação...
...ou pode-se utilizar também componentes gratuitos e muito bom que vai te atender neste quesito. O JCL/JVCL (Project Jedi Components). Utilize o JvValidateEdit que possui o que procura com outras características e funcionalidades interessantes.
Abraços
...ou pode-se utilizar também componentes gratuitos e muito bom que vai te atender neste quesito. O JCL/JVCL (Project Jedi Components). Utilize o JvValidateEdit que possui o que procura com outras características e funcionalidades interessantes.
Abraços
GOSTEI 0
Rafael Cruz
10/03/2011
eu informo somente isso no evento keypress aceito somente numeros, backspace e enter
if not (key in [0..9,#8, #13]) then key := #0;
if not (key in [0..9,#8, #13]) then key := #0;
GOSTEI 0
Marco Salles
10/03/2011
eu informo somente isso no evento keypress aceito somente numeros, backspace e enter
if not (key in [0..9,#8, #13]) then key := #0;
if not (key in [0..9,#8, #13]) then key := #0;
Veja ela não quer utilizar o evento
eu gostaria de fazer com que
quando clicase no botão salvar ela aparecesse a mensagem (aceita apenas numero)
se eu for colocar com o OnKeyPress ele altomaticamen aparece a mensagem
quando clicase no botão salvar ela aparecesse a mensagem (aceita apenas numero)
se eu for colocar com o OnKeyPress ele altomaticamen aparece a mensagem
entende ???
GOSTEI 0
Rafael Cruz
10/03/2011
caso ela clique no botão e no edit tenha letras da uma mensagem é isso ?
se for tenho uma função que pode ajudar eu acho
Function SoNumero(STR : String) : String;
// Filtra todos os numeros de uma string
var
Ind : Integer;
TmpRet : String;
begin
TmpRet := ;
for Ind := 1 to Length(STR) do
begin
if (Copy(STR,Ind,1) = 1) or (Copy(STR,Ind,1) = 2) or (Copy(STR,Ind,1) = 3) or (Copy(STR,Ind,1) = 4) or
(Copy(STR,Ind,1) = 5) or (Copy(STR,Ind,1) = 6) or (Copy(STR,Ind,1) = 7) or
(Copy(STR,Ind,1) = 8) or (Copy(STR,Ind,1) = 9) or (Copy(STR,Ind,1) = 0) then
begin
TmpRet := TmpRet + Copy(STR, Ind, 1);
end;
end;
Result := TmpRet;
end;
no click do botao pode colocar
if (length(edit1.text)) (length(sonumero(edit1.text))) then mensagem
Mais ai me pergunto.. se é um campo que só aceita gravar numero, pq fazer deixar o usuário digitar letra clicar no salvar e ter que voltar no edit corrigir pra salvar de novo.
se for tenho uma função que pode ajudar eu acho
Function SoNumero(STR : String) : String;
// Filtra todos os numeros de uma string
var
Ind : Integer;
TmpRet : String;
begin
TmpRet := ;
for Ind := 1 to Length(STR) do
begin
if (Copy(STR,Ind,1) = 1) or (Copy(STR,Ind,1) = 2) or (Copy(STR,Ind,1) = 3) or (Copy(STR,Ind,1) = 4) or
(Copy(STR,Ind,1) = 5) or (Copy(STR,Ind,1) = 6) or (Copy(STR,Ind,1) = 7) or
(Copy(STR,Ind,1) = 8) or (Copy(STR,Ind,1) = 9) or (Copy(STR,Ind,1) = 0) then
begin
TmpRet := TmpRet + Copy(STR, Ind, 1);
end;
end;
Result := TmpRet;
end;
no click do botao pode colocar
if (length(edit1.text)) (length(sonumero(edit1.text))) then mensagem
Mais ai me pergunto.. se é um campo que só aceita gravar numero, pq fazer deixar o usuário digitar letra clicar no salvar e ter que voltar no edit corrigir pra salvar de novo.
GOSTEI 0
Gregory Monteiro
10/03/2011
teste
GOSTEI 0