Função para que sirva pra todos os forms
Estou precisando de criar uma função global para que sirva para todos os forms.
Ex.: Tenho um sistema que usa uma calculadora que uso o seguinte comando para abri-la.
if Key = VK_F10 then
begin
FrmCalculadora.Show
Key :=0;
end;
Só que tenho que fazer isso para cada form do sistema. Gostaria de saber se tem alguma forma de fazer uma função só que sirva para todos os forms, para quando eu pressionar F10 em qualquer form. abrir a calculadora.
Ex.: Tenho um sistema que usa uma calculadora que uso o seguinte comando para abri-la.
if Key = VK_F10 then
begin
FrmCalculadora.Show
Key :=0;
end;
Só que tenho que fazer isso para cada form do sistema. Gostaria de saber se tem alguma forma de fazer uma função só que sirva para todos os forms, para quando eu pressionar F10 em qualquer form. abrir a calculadora.
Visualdesigner
Curtidas 0
Respostas
Vitor Alcantara
24/07/2007
No caso que você falou você poderia fazer isso de vários modos
Um modo simples mais eficaz seria utilizando um TMainMenu e colocalo em seu form principal dai você colocar o botão de atalho (a propriedade ShortCut) do item com a combinação que você escolher, isso deverá servir para todos os forms que forem inicializados sem ShowModal.
procedure TFormPrincipal.Calculadora1Click(Sender: TObject);
begin
FrmCalculadora.Show;
end;
Um modo simples mais eficaz seria utilizando um TMainMenu e colocalo em seu form principal dai você colocar o botão de atalho (a propriedade ShortCut) do item com a combinação que você escolher, isso deverá servir para todos os forms que forem inicializados sem ShowModal.
procedure TFormPrincipal.Calculadora1Click(Sender: TObject);
begin
FrmCalculadora.Show;
end;
GOSTEI 0
Vitor Alcantara
24/07/2007
Outro método que serviria até para os forms inicializados com ShowModal seria utilizando um TApplicationEvents (Palheta Additional) e definir o método OnMessage com esse código.
ApplicationEvents1
ApplicationEvents1
procedure TFormPrincipal.ApplicationEvents1Message(var Msg: tagMSG; var Handled: Boolean); begin case Msg.Message of WM_KEYDOWN : begin //Fica escutando o evento de precionamento de teclas if Msg.wParam = VK_F10 then //Verifica se a tecla F10 foi apertada begin //Executa o form FrmCalculadora FrmCalculadora.Show; end; end ; end; end;
GOSTEI 0
Visualdesigner
24/07/2007
Não funcionou não. Quando pressiono o F10 nada acontece.
GOSTEI 0
Vitor Alcantara
24/07/2007
Tenta isso:
procedure TForm1.ApplicationEvents1Message(var Msg: tagMSG; var Handled: Boolean); begin case Msg.Message of WM_KEYDOWN, WM_SYSCHAR, WM_SYSKEYDOWN : begin if Msg.wParam = VK_F10 then SHOWMESSAGE(´CALCULADORA´); end ; end ; end;
GOSTEI 0