teclas de atalho qdo nao é o form principal

06/07/2004

0

Boa noite!!!
Qdo uso teclas de atalho no form principal funciona normalment, mas qdo do form principal abro um segundo form não funciona as teclas de atalho..

uso a seguinte rotina:

procedure TFrmBalanco.FormKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if Key = VK_F1 then
NovoBalancoClick(sender);
if Key = VK_F2 then
SpeedButton1Click(Sender);
if Key = VK_F6 then
ModificarBalancoClick(sender);
if Key = VK_F7 then
SalvarBalancoClick(sender);
end;

não funciona no segundo form!!!!
alguém tem uma dica?


Rogsystem

Rogsystem

Responder

Posts

06/07/2004

Dankada

Boa noite!!! Qdo uso teclas de atalho no form principal funciona normalment, mas qdo do form principal abro um segundo form não funciona as teclas de atalho.. uso a seguinte rotina: procedure TFrmBalanco.FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); begin if Key = VK_F1 then NovoBalancoClick(sender); if Key = VK_F2 then SpeedButton1Click(Sender); if Key = VK_F6 then ModificarBalancoClick(sender); if Key = VK_F7 then SalvarBalancoClick(sender); end; não funciona no segundo form!!!! alguém tem uma dica?


rapaz no form2 coloque a mesma coisa no evento FormKeyDown, se naum for isso q vc quer posta ai.


Responder

07/07/2004

Rogsystem

foi isso q eu fiz mas nao acontece nada


Responder

07/07/2004

Dankada

essas procedures estao no forum1 (interrogação) se estiverem faz isso

procedure Tform2.FormKeyDown(Sender: TObject; var Key: Word; 
Shift: TShiftState); 
begin 
if Key = VK_F1 then  
  form1.NovoBalancoClick(sender); 
if Key = VK_F2 then 
  form1.SpeedButton1Click(Sender); 
if Key = VK_F6 then 
  form1.ModificarBalancoClick(sender); 
if Key = VK_F7 then 
  form1.SalvarBalancoClick(sender); 
end; 



ps. meu teclado esta desconfigurado por isso naum tem interrogacao :lol: :lol:


Responder

08/07/2004

Fknyght

Faz o seguinte

defina no seu on create do formulario principal a linha abaixo


[b:b6eea6051f]Application.OnMessage := AppMessage;[/b:b6eea6051f]


Depois crie a função appMessage como mostrado

procedure TForm1.AppMessage(var Msg: TMsg; var Handled: Boolean); begin inherited; if msg.wParam = VK_F1 then ShowMessage(´F1 apertado´); if msg.wParam = VK_F2 then ShowMessage(´F2 apertado´); if msg.wParam = VK_F3 then ShowMessage(´F3 apertado´); End;


Na clausula private do TFORM defina a linha abaixo
[b:b6eea6051f]procedure AppMessage(var Msg: TMsg; var Handled: Boolean);[/b:b6eea6051f]

E pronto hehe :)

Toda tecla que voce precionar vai ser processada na procedure APPMESSAGE

Espero ter ajudado


Responder

08/07/2004

Thiago Vidal

Pode parecer meio óbvio, mas como ninguém deu a idéia entao eu vou falar...

A propriedade KeyPreview do seu form secundário está como True?

KeyPreview faz com que toda tecla pressionada no form, vá também para o evento OnKeyDown do form, e não só do Controle com o Foco.

Talvez a melhor solução para o seu problema seja criar uma TActionList e associar uma tecla de atalho para cada action que voce tiver, e implementar o metodo para executar esta Action no método OnExecute.

Espero ter ajudado.... quaisquer dúvidas sobre Actions, o Help do Delphi é sempre um bom lugar para pesquisar.


Responder

APRENDA A PROGRAMAR DO ZERO AO PROFISSIONAL

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

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

Aceitar