GARANTIR DESCONTO

Fórum criar uma procedure em uma unit para o evento keypress #267109

02/02/2005

0

oi amigos,
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

Marcusbraga

Responder

Posts

02/02/2005

Marcusbraga

oi amigos, 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 if tecla = #13 then 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....



Responder

Gostei + 0

02/02/2005

Beppe

Seria algo assim:
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.


Responder

Gostei + 0

02/02/2005

Rodolpho123

Vc pode fazer assim:
Perform(WM_NEXTDLGCTL,0,0);


O foco vai mover-se de acordo com o seu TabOrder


Responder

Gostei + 0

02/02/2005

Rafael Santana

é só pra trocar o Tab pelo Enter...????

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+


Responder

Gostei + 0

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

Aceitar