Delphi Ctrl+;在OnKeyPress事件中转换的快捷键?

Delphi Ctrl+;在OnKeyPress事件中转换的快捷键?,delphi,keyboard-shortcuts,keyboard-events,delphi-2007,Delphi,Keyboard Shortcuts,Keyboard Events,Delphi 2007,我试图从TEdit的OnKeyPress事件中检测Ctrl+V,我注意到当按下Ctrl+AnyKey时,Key参数假定一个异常值 示例: procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char); begin ShowMessage(IntToStr(Ord(Key))); end; 它产生以下结果: Ctrl+Q 17 Ctrl+W 23 Ctrl+E 5 Ctrl+R 18 Ctrl+A 1 Ctrl+Z 26 C

我试图从
TEdit
OnKeyPress
事件中检测Ctrl+V,我注意到当按下Ctrl+AnyKey时,
Key
参数假定一个异常值

示例:

procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
  ShowMessage(IntToStr(Ord(Key)));
end;
它产生以下结果:

  • Ctrl+Q 17
  • Ctrl+W 23
  • Ctrl+E 5
  • Ctrl+R 18
  • Ctrl+A 1
  • Ctrl+Z 26
  • Ctrl+C3
  • Ctrl+V 22
  • Ctrl+x24
我不明白钥匙是怎么翻译的,这些代码是什么意思

这似乎与以下问题无关:

有人能解释一下吗

我不明白钥匙是怎么翻译的,这些代码是什么意思

使用Ctrl+AnyKey组合获得的值是Ascii控制代码。 它们产生于需要从键盘输入非打印(控制)字符。控制字符的(典型)值低于32加上
del
字符(127)


可以找到更多关于历史和标准的信息。

这听起来是错误的解决方案。难道你不应该听WM_PASTE吗。然后,程序将与粘贴用户其他方法的用户一起工作。比如上下文菜单。或者Ctrl+Insert。如果您确实需要捕捉Ctrl+KEYPRESS,那么OnKeyPress是错误的方法。所以这个问题看起来很像是在两个不正确的前提下提出的。你得到的是值。@DavidHeffernan:我最初的目标是,如果
剪贴板,将
参数设置为
#0
。AsText
不只包含数字字符,但也许我会问另一个问题。我之所以提出这个问题,是因为我对
OnKeyPress
事件中键转换为字符的方式很好奇。您可以学习如何在控件中截取
WM\u PASTE
消息的示例。