Impedir a colagem de Texto, em Edits que só aceitam números.
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
Curtidas 0
Respostas
Deus
05/12/2003
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.
GOSTEI 0
Thiago Vidal
05/12/2003
exatamente oq eu procurava... eu tava justamente tendo este problema de estouro da pilha fazendo do meu jeito.
obrigado pela ajuda.
obrigado pela ajuda.
GOSTEI 0