Impedir a colagem de Texto, em Edits que só aceitam números.

05/12/2003

2

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.


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

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários. Para saber mais sobre o uso de cookies,
consulte nossa política de privacidade. Ao continuar navegando em nosso site, você concorda com a nossa política.

Aceitar