Como evitar que o usuário insirá um caracter

Delphi

24/12/2005

Como evitar que o usuário insirá um caracter não númerico em um edit, tipo -5 o usuário não poderá utilizar -5 ou +5 pq apenas o 5.


Chip_set

Chip_set

Curtidas 0

Respostas

Edilcimar

Edilcimar

24/12/2005

no onkeydown coloque
if not key in[0..9] then
key := #0


GOSTEI 0
Leandroaoa

Leandroaoa

24/12/2005

ops obs. no post do Edilcimar

o evento e o onkeypress

If NOT (Key in[´0´..´9´,#8,13]) Then
Key:=0;

isso quer dizer que so vai aceitar o pressionamento das teclas numericas o ENTER e o TAB


GOSTEI 0
Martins

Martins

24/12/2005

ops obs. no post do Edilcimar o evento e o onkeypress If NOT (Key in[´0´..´9´,#8,13]) Then Key:=0; isso quer dizer que so vai aceitar o pressionamento das teclas numericas o ENTER e o TAB


Somente uma pequena correção tá.

 If NOT (Key in[´0´..´9´,8,13]) Then
  Key:=0;


Somente teclas númericas, ENTER e BackSpace e não TAB, pois o código Ascii do TAB é 9.

Boas Festas!!!


GOSTEI 0
Chip_set

Chip_set

24/12/2005

[quote:aae8e2cd9a=´LeandroAoa´]ops obs. no post do Edilcimar o evento e o onkeypress If NOT (Key in[´0´..´9´,#8,13]) Then Key:=0; isso quer dizer que so vai aceitar o pressionamento das teclas numericas o ENTER e o TAB


Somente uma pequena correção tá.

 If NOT (Key in[´0´..´9´,8,13]) Then
  Key:=0;


Somente teclas númericas, ENTER e BackSpace e não TAB, pois o código Ascii do TAB é 9.

Boas Festas!!![/quote:aae8e2cd9a]

Faltou algo, tipo o compo é de quantidade e se eu tiver casas decimais? tipo 10,230 (metros pro exemplo).


GOSTEI 0
Edilcimar

Edilcimar

24/12/2005

a pergunta foi sobre numérico e ninguém atinou sobre flutuante, então basta acrescentar a vírgula ou o ponto, dependendo da configuração do sistema, mas isto é tão óbvio que ninguém colocou, e como a idéia é ensinar a pescar e não a entregar o peixe, o princípio básico vc aprendeu, portanto basta acrescentar o código desejado!


GOSTEI 0
Chip_set

Chip_set

24/12/2005

a pergunta foi sobre numérico e ninguém atinou sobre flutuante, então basta acrescentar a vírgula ou o ponto, dependendo da configuração do sistema, mas isto é tão óbvio que ninguém colocou, e como a idéia é ensinar a pescar e não a entregar o peixe, o princípio básico vc aprendeu, portanto basta acrescentar o código desejado!


Concordo com você no quisito, ensinar a pescar, agora, eu não conheço os códigos, estou tentando aprender por isso a solicitação. e muito obrigado.

Tenho a certeza que um dia estarei aqui ajudando a outros.


GOSTEI 0
Edilcimar

Edilcimar

24/12/2005

ótimo, então se entendeu basta acrescentar um ponto ou uma vírgula ou código


GOSTEI 0
Paulo

Paulo

24/12/2005

para colocar a vírgula e o ponto, faça:

if not(key in[´0´..´9´, ´,´, ´.´,#8,13]) then key := 0;



GOSTEI 0
Martins

Martins

24/12/2005

para colocar a vírgula e o ponto, faça: [quote:c80919aaac]if not(key in[´0´..´9´, ´,´, ´.´,#8,13]) then key := 0;
[/quote:c80919aaac]

Chip_Set, o Colega [b:c80919aaac]Paulo[/b:c80919aaac] postou a resposta, e quanto ao comentário do [b:c80919aaac]Edilcimar[/b:c80919aaac] ele tem razão, ensinamos a pescar, pegar o peixe é com vc, vc tem sempre q arriscar, tentativa erro/acerto, só q o código estava mole, pq a idéia é: o edit só aceitara os valores se a tecla digitada estiver na array.

Use mais o Help do Delphi e pesquisas no Fórum, vai te ajudar bastante, um dia eu tb perguntei bastante aqui, e o pessoal só me mostrava a direção, caminhar era comigo.

Valew!!


GOSTEI 0
POSTAR