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.


Thiago Vidal

Thiago Vidal

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:

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.


Responder

Que tal ter acesso a um e-book gratuito que vai te ajudar muito nesse momento decisivo?

Ver ebook

Recomendado pra quem ainda não iniciou o estudos.

Eu quero
Ver ebook

Recomendado para quem está passando por dificuldades nessa etapa inicial

Eu quero

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

Aceitar