如何识别 KeyPress 事件中的虚拟键码?

How to recognize virtual key codes in KeyPress event?

我正在尝试实现类似于记事本在用户按下 F5 键时插入日期和时间的功能。在活动中

procedure TFormMain.Memo1KeyPress(Sender: TObject; var Key: Char);

代码

  if Key=Chr(VK_F5) then
  begin
    Memo1.Lines.Add(FormatDateTime('h:nn',now));
  end;

没有效果。同样的方法,

  if Key=Chr(VK_ESCAPE) then
  //do something

做某事。

当用户按下 F5 时,我需要做什么才能让应用程序识别?

来自帮助表单 TMemo KeyPress 事件:

Keys that do not correspond to an ASCII Char value (SHIFT or F1, for example) do not generate an OnKeyPress event.

F5 是这些键之一。请尝试使用 OnKeyDown 事件。

procedure TForm1.Memo1KeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  if Key = VK_ESCAPE then
    Memo1.Lines.Add('Escape')
  else if Key = VK_F5 then
    Memo1.Lines.Add('F5');
end;