Fórum Edit que só aceita números #448945
19/07/2013
0
Estou com uma probleminha no evento do edit.
O que eu queria era que: quando apertar o enter ele verificasse se só tem
números se sim ele chama um outro evento se não a msg.
no OnKeyPress eu implementei o código:
rocedure TfrmVisualizadorProcessos.edtNumPaginaKeyPress(Sender: TObject;
var Key: Char);
begin
If Key = #13 then//para usar o Enter
begin
Key := #0;
if (key in ['0'..'9'] = false) then // tenho que colocar número por número?
begin
Key := #0;
btnIrParaClick(Self);
edtNumPagina.SetFocus;
end;
end
else
Application.MessageBox('Este campo só acita números!','Aviso',mb_Ok+MB_ICONINFORMATION);
end;
Eduardo Mendonça
Curtir tópico
+ 0Posts
19/07/2013
Joel Rodrigues
Linha 4: Se Key=#13 então Key não tem outro valor a não ser #13, logo, não faz sentido comparar com mais nada.
Linha 6: Você devine Key como #0, então nem adianta mais compara com outro valor, pois Key aogra é #0.
Gostei + 0
19/07/2013
Joel Rodrigues
Ou quer que a cada caractere digitado, verifique se é um número e execute algo.
Gostei + 0
19/07/2013
Marco Salles
Ou quer que a cada caractere digitado, verifique se é um número e execute algo.
eu entendi do primeiro modo
quando teclar enter, verificar se só existem números no edit?
Logo
var
numero:Integer;
begin
If Key = #13 then//para usar o Enter
begin
Key := #0;
if TryStrToInt(Tedit(sender).Text,numero) then // testa se so tem Numeros
begin
btnIrParaClick(Self);
edtNumPagina.SetFocus;
end
else
Application.MessageBox('Este campo só acita números!','Aviso',mb_Ok+MB_ICONINFORMATION);
end;Gostei + 0
19/07/2013
Eduardo Mendonça
o evento btnIrParaClick(Self); se eu deixar
If Key = #13 then//para usar o Enter
begin
Key := #0;// sem isso da um Beep feio
btnIrParaClick(Self);
end;
no que eu postei anteriormente só de apertar um numero já caio no aviso.
eu preciso que quando usuário digite o numero e quando apertar enter ele
verifique se é número e se sim dispara o btnIrParaClick(Self); se não o
aviso
Application.MessageBox('Este campo só acita números!','Aviso',mb_Ok+MB_ICONINFORMATION);Gostei + 0
19/07/2013
Eduardo Mendonça
Ou quer que a cada caractere digitado, verifique se é um número e execute algo.
eu entendi do primeiro modo
quando teclar enter, verificar se só existem números no edit?
Logo
var
numero:Integer;
begin
If Key = #13 then//para usar o Enter
begin
Key := #0;
if TryStrToInt(Tedit(sender).Text,numero) then // testa se so tem Numeros
begin
btnIrParaClick(Self);
edtNumPagina.SetFocus;
end
else
Application.MessageBox('Este campo só acita números!','Aviso',mb_Ok+MB_ICONINFORMATION);
end;no lugar do Tedit(sender) eu coloco o meu edit?
Gostei + 0
19/07/2013
Marco Salles
Pode mas não é necessário .. Colocar o seu edit vc limita o código a ser utilizado somente no seu edit
se vc tiver outros edits com o mesmo código vc vai ter que escrever outros códigos com a mesma função
porém utilizando o Parãmetro sender vc generaliza para qq objeto da classe Tedit
[]sds
Gostei + 0
19/07/2013
Eduardo Mendonça
Gostei + 0
19/07/2013
Eduardo Mendonça
MARCO ANTONIO
Não sei nem explicar mas do nada o código esta funcionando
eu fiz dois teste logo quando você postou e deu errado
e agora eu recoloquei o código e ele funcionou perfeito.
Já não é a primeira vez que isso acontece du nado o código que não funfava roda direitinho
Obrigado!
Gostei + 0
19/07/2013
Cleverson.
Gostei + 0
19/07/2013
Marco Salles
os mais antigos não
Gostei + 0
20/07/2013
Eduardo Mendonça
Gostei + 0
20/07/2013
Marco Salles
sim , mas deve-se deixar claro que é facílimo criar um Componente TEdit com esta propriedade. Existe bibliotecas de
componentes para o Delphi7 onde foi estendido esta propriedade ou característica
[]sds
Gostei + 0
20/07/2013
Eduardo Mendonça
Gostei + 0
20/07/2013
Gabriel Simas
Veja se este trecho lhe ajuda em algo?
procedure TCadastro.ValidaCampoClick(Sender: TObject);
var
apenasNumero: double;
begin
if TryStrToFloat(edtValor.Text, ApenasNumero) then
blah = apenasNumero;
else
ShowMessage('uhum! tá querendo inventar? é malandro da onde, irmão?');
end;
Tem muito tempo que não programo em Delphi, mas que eu me lembre eu fazia assim, hehe
Forte Abraço e espero ter ajudado.
Gabriel Simas
Gostei + 0
20/07/2013
Marco Salles
Veja se este trecho lhe ajuda em algo?
procedure TCadastro.ValidaCampoClick(Sender: TObject);
var
apenasNumero: double;
begin
if TryStrToFloat(edtValor.Text, ApenasNumero) then
blah = apenasNumero;
else
ShowMessage('uhum! tá querendo inventar? é malandro da onde, irmão?');
end;
gabrielsimas a dúvida original dele ja foi solucionada . Alguém porém sugeriu utilizar a propriedade NumbersOnly do TEdit presente se não me falha a memória somente a partir do Delphi2007 . Como o amigo utiliza Delphi7 foi sugerido caso não queira utilizar o evento onkeyPress , que ele crie um Controle que iniba caracteres diferentes de Números ou
que utilize a vasta biblioteca espalhada na net para este propósito . Entendeu ???
Tem muito tempo que não programo em Delphi, mas que eu me lembre eu fazia assim, hehe
Forte Abraço e espero ter ajudado.
Gabriel Simas
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)