如何在OnKeyPress事件中翻译Ctrl + Key快捷键?

时间:2018-03-15 13:08:41

标签: 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
  • Ctrl + C 3
  • Ctrl + V 22
  • Ctrl + X 24

我不明白如何翻译密钥,这些代码意味着什么?

它似乎与ASCII table

无关

enter image description here

有人可以对此有所了解吗?

1 个答案:

答案 0 :(得分:5)

  

我不明白如何翻译密钥,这些代码意味着什么?

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

enter image description here

可以找到有关背后历史和标准的更多信息herehere