Edit que só aceita números
Bom Dia!
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:
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
Curtidas 0
Respostas
Joel Rodrigues
19/07/2013
Analise a lógica do seu código:
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.
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
Joel Rodrigues
19/07/2013
Você quer quando teclar enter, verificar se só existem números no edit?
Ou quer que a cada caractere digitado, verifique se é um número e execute algo.
Ou quer que a cada caractere digitado, verifique se é um número e execute algo.
GOSTEI 0
Marco Salles
19/07/2013
Você quer quando teclar enter, verificar se só existem números no edit?
Ou quer que a cada caractere digitado, verifique se é um número e execute algo.
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
Eduardo Mendonça
19/07/2013
tem um campo que só para aceita números e quando aperta enter ele dispara
o evento btnIrParaClick(Self); se eu deixar
ele Funciona só normal sem Beep só que permite outros caracteres
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
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
Eduardo Mendonça
19/07/2013
Você quer quando teclar enter, verificar se só existem números no edit?
Ou quer que a cada caractere digitado, verifique se é um número e execute algo.
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
Marco Salles
19/07/2013
no lugar do Tedit(sender) eu coloco o meu edit?
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
Eduardo Mendonça
19/07/2013
eu testei o seu codigo. quando digito letras ele não vai para a msg de erro que eu fiz ele da um erro do delph
GOSTEI 0
Eduardo Mendonça
19/07/2013
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
Cleverson.
19/07/2013
O Edit tem a propriedade NumbersOnly, é só alterar o valor para True que o mesmo vai aceitar somente números.
GOSTEI 0
Marco Salles
19/07/2013
O Edit tem a propriedade NumbersOnly, é só alterar o valor para True que o mesmo vai aceitar somente números.
os mais antigos não
GOSTEI 0
Eduardo Mendonça
19/07/2013
Eu uso Delphi 7 e não tem essa propriedade.
GOSTEI 0
Marco Salles
19/07/2013
Eu uso Delphi 7 e não tem essa propriedade.
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
Eduardo Mendonça
19/07/2013
vou procurar aqui e 2ª feira eu vejo como vai ficar
GOSTEI 0
Gabriel Simas
19/07/2013
Prezado colega,
Veja se este trecho lhe ajuda em algo?
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
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
Marco Salles
19/07/2013
Prezado colega,
Veja se este trecho lhe ajuda em algo?
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
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
Gabriel Simas
19/07/2013
Prezado colega,
Veja se este trecho lhe ajuda em algo?
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
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
Sim, entendi.
Forte Abraço.
Gabriel Simas
GOSTEI 0
Eduardo Mendonça
19/07/2013
Já Consegue resolver Descobrir o MaskEdit lol que fica muito melhor não Aparece msg mas também só entra no edit o que
você quiser.
Muito Obrigado a todos.
Pode Fechar o Topico
você quiser.
Muito Obrigado a todos.
Pode Fechar o Topico
GOSTEI 0
Marco Salles
19/07/2013
Que bom que vc descobriu o Maskedit que fica muito melhor mas que não Aparece msg mas também só entra no edit o que
você quer . que bom . Vou fechar o tópico
você quer . que bom . Vou fechar o tópico
GOSTEI 0