Impedir a colagem de Texto, em Edits que só aceitam números.
05/12/2003
0
Ja vi aqui nesse fórum diversos tópicos sobre como travar a digitação em um Edit apenas para números.
Entretando, usando o metodo no OnKeyPress e verificar se Key in [´0´..´9´...... etc...] permite que o usuário cole strings dentro do editbox ao pressionar Ctrl+V.
Gostaria de saber se existe um metodo de impedir isso, programando na CLX.
Entretando, usando o metodo no OnKeyPress e verificar se Key in [´0´..´9´...... etc...] permite que o usuário cole strings dentro do editbox ao pressionar Ctrl+V.
Gostaria de saber se existe um metodo de impedir isso, programando na CLX.
Thiago Vidal
Curtir tópico
+ 0
Responder
Posts
05/12/2003
Deus
Bem, isso é simples.. eu criei uma função que resolve isso pra você. :) É só no evento [i:a90d521feb]OnChange[/i:a90d521feb] do Edit você fazer o seguinte:
Se você colar qualquer coisa, o evento tira tudo o que não for número. Para evitar que o evento OnChange fosse chamado recursivamente infinitas vezes e causasse um estouro de pilha, eu tive de atribuir [i:a90d521feb]nil[/i:a90d521feb] ao evento [i:a90d521feb]OnChange[/i:a90d521feb] do Edit para poder atribuir um novo valor, e então reatribuir o procedimento ao evento. :)
Espero que tenha sido útil! ;) Um abraço, dEUS.
procedure TForm1.Edit1Change(Sender: TObject); var i: Integer; stTmp: String; begin i := 1; stTmp := Edit1.Text; while not (i > Length(stTmp)) do if not (stTmp[i] in [´0´..´9´]) then Delete(stTmp, i, 1) else inc(i); Edit1.OnChange := nil; Edit1.Text := stTmp; Edit1.OnChange := Edit1Change; end;
Se você colar qualquer coisa, o evento tira tudo o que não for número. Para evitar que o evento OnChange fosse chamado recursivamente infinitas vezes e causasse um estouro de pilha, eu tive de atribuir [i:a90d521feb]nil[/i:a90d521feb] ao evento [i:a90d521feb]OnChange[/i:a90d521feb] do Edit para poder atribuir um novo valor, e então reatribuir o procedimento ao evento. :)
Espero que tenha sido útil! ;) Um abraço, dEUS.
Responder
05/12/2003
Thiago Vidal
exatamente oq eu procurava... eu tava justamente tendo este problema de estouro da pilha fazendo do meu jeito.
obrigado pela ajuda.
obrigado pela ajuda.
Responder
Clique aqui para fazer login e interagir na Comunidade :)