Jan*_*rts 11 delphi keyboard-events windows-vista
我从一个新的Delphi VCL应用程序开始,将Menus添加到uses子句,在表单上放一个标签,并指定表单的OnShortCut事件:
procedure TForm1.FormShortCut(var Msg: TWMKey; var Handled: Boolean);
begin
Label1.Caption := ShortCutToText(ShortCut(Msg.CharCode, KeyDataToShiftState(Msg.KeyData)));
end;
Run Code Online (Sandbox Code Playgroud)
在XP上,这适用于我尝试过的所有快捷键组合,包括Shift+ Ctrl+ 0.在Vista和Windows 7上,测试应用程序显示Shift+ Ctrl+ 1到Shift+ Ctrl+ 9,但不显示Shift+ Ctrl+ 0.其他组合如Shift+ 0,Ctrl+ 0,甚至Shift+ Ctrl+ Alt+ 0都可以正常显示.
在调试器下运行应用程序,我发现如果在按下键的同时按住Shift和Ctrl键,则永远不会使用Msg.CharCode = Ord('0')触发OnShortCut事件0.
Delphi IDE在Vista下也存在同样的问题. Ctrl+ Shift+ 1设置书签1,但Ctrl+ Shift+ 0不设置书签0,它应该.
我已经使用Delphi 2007和2010在Windows Vista和7的原始安装上测试了这一点,因此没有第三方软件捕获密钥.我没有尝试过任何其他开发工具来确定问题是Delphi还是Vista本身.
fbo*_*net 15
Shift+ Ctrl+ 0在Vista中预先分配给输入法编辑器(IME):
http://support.microsoft.com/kb/967893
这将解决您的问题但会影响IME的用户(主要是亚洲版本),因此您应该考虑不使用此快捷方式.
归档时间: |
|
查看次数: |
3872 次 |
最近记录: |