GARANTIR DESCONTO

Fórum Edit que só aceita números #448945

19/07/2013

0

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:
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

Eduardo Mendonça

Responder

Posts

19/07/2013

Joel Rodrigues

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.
Responder

Gostei + 0

19/07/2013

Joel Rodrigues

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.
Responder

Gostei + 0

19/07/2013

Marco Salles

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.


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;
Responder

Gostei + 0

19/07/2013

Eduardo Mendonça

tem um campo que só para aceita números e quando aperta enter ele dispara
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;
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
Application.MessageBox('Este campo só acita números!','Aviso',mb_Ok+MB_ICONINFORMATION);
Responder

Gostei + 0

19/07/2013

Eduardo Mendonça

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.


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?
Responder

Gostei + 0

19/07/2013

Marco Salles

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
Responder

Gostei + 0

19/07/2013

Eduardo Mendonça

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
Responder

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!


Responder

Gostei + 0

19/07/2013

Cleverson.

O Edit tem a propriedade NumbersOnly, é só alterar o valor para True que o mesmo vai aceitar somente números.
Responder

Gostei + 0

19/07/2013

Marco Salles

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
Responder

Gostei + 0

20/07/2013

Eduardo Mendonça

Eu uso Delphi 7 e não tem essa propriedade.
Responder

Gostei + 0

20/07/2013

Marco Salles

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
Responder

Gostei + 0

20/07/2013

Eduardo Mendonça

vou procurar aqui e 2ª feira eu vejo como vai ficar
Responder

Gostei + 0

20/07/2013

Gabriel Simas

Prezado colega,

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
Responder

Gostei + 0

20/07/2013

Marco Salles

Prezado colega,

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
Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar