Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/delphi/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Delphi 奇怪的热键行为-它不允许连续使用同一个热键_Delphi_Behavior_Hotkeys - Fatal编程技术网

Delphi 奇怪的热键行为-它不允许连续使用同一个热键

Delphi 奇怪的热键行为-它不允许连续使用同一个热键,delphi,behavior,hotkeys,Delphi,Behavior,Hotkeys,THotkey不允许同一热键两次是正常行为吗 这就是我的意思 假设我将热键设置为Ctrl+Shift+X。然后我执行其他操作,然后回来更改它。当我按住Ctrl和Shift时,我意识到我无论如何都不想更改热键,所以我在按住Ctrl+Shift的同时按X。现在THotkey拒绝了它。我放开所有的钥匙,再次尝试相同的组合。它仍然不允许我分配那个键。即使我点击表单上的其他地方,然后返回并尝试相同的组合,它也不会让我成功 为什么呢?我怎样才能防止呢 谢谢 当您的THotKey控件失去焦点时,您说您在系统范

THotkey不允许同一热键两次是正常行为吗

这就是我的意思

假设我将热键设置为Ctrl+Shift+X。然后我执行其他操作,然后回来更改它。当我按住Ctrl和Shift时,我意识到我无论如何都不想更改热键,所以我在按住Ctrl+Shift的同时按X。现在THotkey拒绝了它。我放开所有的钥匙,再次尝试相同的组合。它仍然不允许我分配那个键。即使我点击表单上的其他地方,然后返回并尝试相同的组合,它也不会让我成功

为什么呢?我怎样才能防止呢


谢谢

当您的THotKey控件失去焦点时,您说您在系统范围内注册了热键。当您重新进入THotKey控件时,原始值仍然注册,因此当您按下该组合键时,操作系统会截获它,因为它是一个注册的组合键。THotKey控件从未看到它


当THotKey控件具有焦点时,您需要注销热键。

当THotKey控件失去焦点时,您说您在系统范围内注册了热键。当您重新进入THotKey控件时,原始值仍然注册,因此当您按下该组合键时,操作系统会截获它,因为它是一个注册的组合键。THotKey控件从未看到它


当THotKey控件具有焦点时,您需要注销热键。

我尝试时不会发生这种情况(Delphi 2009,Windows 7)。请注意,
THotkey
是标准Windows控件的包装,也就是说,该控件不是用Delphi编写的。它甚至不是一个经过修改的(在Delphi中)标准编辑控件;而是Microsoft Windows操作系统的一部分。因此,它的行为不取决于Delphi版本[除非它的VCL包装部分有问题],而可能取决于Windows版本。刚刚试用过:它在Windows 95和Delphi 4中也能工作。@Andreas-我正在运行Windows 7,这可能是问题吗?(1)你的应用程序需要有焦点,热键才能在应用程序中启动。(2) 处理程序遇到循环/退出条件,因此无法执行处理程序的主要部分。请在问题中粘贴密钥处理程序的代码。@Johan,这不是在运行时启动热键的问题。这是一个在设计时设置属性的问题。@Jeff:然后你回答了你自己的问题。在我尝试时(Delphi 2009,Windows 7)不会出现这种情况。请注意,
THotkey
是标准Windows控件的包装,也就是说,该控件不是用Delphi编写的。它甚至不是一个经过修改的(在Delphi中)标准编辑控件;而是Microsoft Windows操作系统的一部分。因此,它的行为不取决于Delphi版本[除非它的VCL包装部分有问题],而可能取决于Windows版本。刚刚试用过:它在Windows 95和Delphi 4中也能工作。@Andreas-我正在运行Windows 7,这可能是问题吗?(1)你的应用程序需要有焦点,热键才能在应用程序中启动。(2) 处理程序遇到循环/退出条件,因此无法执行处理程序的主要部分。请在问题中粘贴密钥处理程序的代码。@Johan,这不是在运行时启动热键的问题。这是一个在设计时设置属性的问题。@Jeff:然后你回答了自己的问题。完成了!很好用,为什么我没想到呢P谢谢你,伙计!完成!很好用,为什么我没想到呢P谢谢你,伙计!