procedure Tfrmcheckin.FormCreate(Sender: TObject);
begin
Application.OnMessage:=self.AppMessage;
end;
procedure Tfrmcheckin.AppMessage(var Msg: TMsg; var Handled: Boolean);
begin
if Msg.message = WM_KEYDOWN then
begin
if (Msg.wParam=vk_f1)then
begin
butdesk.click ;
exit;
end;
end;按下F1就触发butdesk.click 这个事件。怎么能判断,我只在frmcheckin这个窗体出现时按下F1有效,其他窗体出现时按下F1无效
begin
Application.OnMessage:=self.AppMessage;
end;
procedure Tfrmcheckin.AppMessage(var Msg: TMsg; var Handled: Boolean);
begin
if Msg.message = WM_KEYDOWN then
begin
if (Msg.wParam=vk_f1)then
begin
butdesk.click ;
exit;
end;
end;按下F1就触发butdesk.click 这个事件。怎么能判断,我只在frmcheckin这个窗体出现时按下F1有效,其他窗体出现时按下F1无效
...
begin
if (Msg.message = WM_KEYDOWN) and (Msg.hwnd = frmcheckin.Handle) then
begin
if (Msg.wParam=vk_f1)then
begin
butdesk.click ;
exit;
end;
end;我这样试过,但在frmcheckin这个窗体,按下F1不发生任何事件,打开这个窗体后,关上,再开别的窗体,按下F1依然会出错
怎么判断是不是 frmcheckin上所有控件发出的消息而不是其他窗体上的呢
form的keypreview设置为true
楼上的办法,好象无效的样子:(