Fórum Dúvida sobre SelectNext(), alguém pode me ajudar? #147148
18/03/2003
0
É 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.
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
Curtir tópico
+ 0
Responder
Posts
18/03/2003
Andersonbox
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.
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.
Responder
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)