微科社区,轻松开发从此开始! 请登陆 免费注册

微科社区

DELPHI如何注册窗体热键?

时间:2017-01-18 04:01  浏览:努力统计中...
比如我想注册窗体热键F4(不是全局热键),仅在活动窗口时才有效。如果注册? 请给出代码 Form的key preview属性不可以? #2楼 设置form.keypreview:=true; 然后在formKeyPress事件,写上你的代码
比如我想注册窗体热键F4(不是全局热键),仅在活动窗口时才有效。如果注册?
请给出代码

Form的key preview属性不可以?
#2楼

设置form.keypreview:=true;
然后在formKeyPress事件,写上你的代码
if key=vk_f4 then
...

那就在窗体中的按键事件中处理,还可以重载WndProc,捕获按键消息


这个方法看起来不错,可是为什么会提示Incompatible types?
if key=vk_f4 then showmessage('F4');
这样子

写在KeyDown事件

HotKeyIdF5:=GlobalAddAtom('MYHotKeyIdF5')-$C000;
  RegisterHotKey(Handle,HotKeyIdF5,0,VK_F5);

  end;
UnRegisterHotKey(handle,HotKeyIdF5);


procedure HotKeyDown(var Msg:Tmessage);message WM_HOTKEY;

 if(Msg.LparamLo=0)AND (Msg.LParamHi=VK_F5) then //F5
  begin
  //to do  

2楼方法可行 
  Shift: TShiftState);
begin
  if Key = VK_F4 then
  ......
end;

Delphi(Pascal) code
keypreview:=true;procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);begin if Key = VK_F4 then ......end;


如果是onpress事件,要这样 if Key = Char(VK_F4) then


楼主,请查看一下这个帖子

http://topic.csdn.net/u/20120525/17/47353b38-582c-4f99-b1ac-951317057fa0.html

我用shortcut注册的话,发现按下热键会出现2次效果,难道是DELPHI的BUG么?求解谢谢
希望这个能帮到你的,
功能是可以任意定义“F1至F12”内任意一个值,可以马上生效的

procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;

楼主有空可以看看已结的帖子吧供稿:香港公司注册www.hkatreg.net.cn
    顶一下
    (0)
    0%
    踩一下
    (0)
    0%
    ------分隔线------