Dúvida sobre SelectNext(), alguém pode me ajudar?

Delphi

18/03/2003

É o seguinte, criei um componente TEdit que no envento OnKeyPress verifica uma determinada condição, por exemplo:
no OnKeyPress eu coloquei

if Length(Self.Text) = 6 then
begin
SelectNext(Screen.ActiveControl, True, True);
ShowMessage(´Funcionou´);
end;

Coloquei o ShowMessage só pra testar e realmente funciona, a msg é mostrada mas a 1ª linha(SelectNext...) não é executada, ou seja, o próximo controle não é focado. Quero salientar que também tentei fazer isso colocando ao invés do SelectNext(), o comando
Perform(WM_NEXTDLGCTL, 0, 0);
Se eu colocar qualquer um desses comandos no OnKeyPress em TEMPO DE PROJETO funciona perfeitamente!
Porque será que não está funcionando?

Desde já agradeço,

ass: Milton Júnior.


Anonymous

Anonymous

Curtidas 0

Respostas

Andersonbox

Andersonbox

18/03/2003

Tente isto:

if (Key <> #8) and (Length(TEdit(Sender).Text) = 6) then
begin
SelectNext(Screen.ActiveControl, True, True);
ShowMessage(´Funcionou´);
Key := 0;
end;

NOTAS:
1o. veja se não foi a tecla BackSpace (8)
2o. Self está se referindo ao objeto ao qual a rotina OnKeyPress está ligada (Por exemplo: TForm1), no caso, vc deverá usar TEdit(Sender) e não Self.
3o. Desabilite a tecla se ele entrar na condição, caso contrário, poderão ser digitados mais que 6 números.

Espero que dê tudo certo.

AndersonBox.


GOSTEI 0
POSTAR