Fórum criar uma procedure em uma unit para o evento keypress #267109
02/02/2005
0
gostaria de criar uma unit com uma procedure relacionada ao keypress
como em quase todos objetos troco o a tecla Tab pelo Enter gostaria de
fazer uma procedure p/ facilitar, criei uma nova unit e coloquei esses comandos nela, mas não compila, o selectnext não é aceito, alguem pode me dizer porque, ou me dar uma dica de como faço para resolver isso:
Procedure kp(tecla : char);
begin
begin
selectnext(activecontrol, true , true);
tecla := #0;
end;
if tecla = 27 then
begin
selectnext(activecontrol, false, true);
tecla := 0;
end;
end;
desde ja agradeço....
Marcusbraga
Curtir tópico
+ 0Posts
02/02/2005
Marcusbraga
Gostei + 0
02/02/2005
Beppe
procedure TForm1.FormKeyPress(Sender: TObject; var Key: Char); begin case Key of #13: selectnext(activecontrol, true , true); 27: selectnext(activecontrol, false, true); else Exit; end; Key := 0; end;
Crie este método no seu form, e use para cada controle interno.
Edit1.OnKeyPress := FormKeyPress;
Edit2.OnKeyPress := FormKeyPress;
Button1.OnKeyPress := FormKeyPress;
...
(pode ser feito com um loop em Controls[Index: Integer])
Mas acho que vc tem outra opção. Mude KeyPreview do form para True, assim apenas o o OnKeyPress do próprio form precisa estar configurado. Mesmo que a tecla seja digitada enquanto dentro de um controle filho, o pai(formulário) processa primeiro. Senão funcionar tente com OnKeyDown.
Gostei + 0
02/02/2005
Rodolpho123
Perform(WM_NEXTDLGCTL,0,0);
O foco vai mover-se de acordo com o seu TabOrder
Gostei + 0
02/02/2005
Rafael Santana
isso é mole...
crie uma procedure assim
Procedure Enter(tecla:Char) ;
no corpo da procedure coloque assim....
Procedure TForm1.Enter(tecla: Char);
begin
if tecla = #13 then
begin
Perform(WM_NextDlgCtl,0,0);
tecla:=0;
end;
end;
no evento keypress de cada form vc coloca...
Enter(13);
PRONTINHO...tá resolvido... espero ter ajudado..
t+
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)