【问题标题】:Delphi detect arrow key in form [duplicate]Delphi检测表单中的箭头键[重复]
【发布时间】:2019-10-09 23:43:28
【问题描述】:

我有一个 Delphi VCL 表单,其中包含许多包含组件的框架。我想检测表单中的箭头键点击,以便我可以在以图形方式排列在矩阵中的帧之间移动。 Keypress 和 Keydown 事件处理程序都无法响应箭头键按下。我在这两种方法中都为虚拟键创建了案例元素,但事件不是由箭头键触发的。这在 Delphi 中是如何实现的?

【问题讨论】:

  • 谢谢,当我问这个问题时,副本没有出现。但似乎有效。

标签: delphi events key


【解决方案1】:

方向键由操作系统保留用于导航目的。 UI 控件不会接收箭头键按下的窗口消息,除非它们明确请求。您需要:

  • 处理 Win32 WM_GETDLGCODE 消息并在其返回值中包含 DLGC_WANTARROWS 标志。

  • 处理 VCL 的自定义 CM_DIALOGKEY 消息。

  • 通过 Win32 SetWindowsHookEx() 函数使用键盘挂钩。

【讨论】:

    猜你喜欢
    • 2012-10-21
    • 2012-12-09
    • 2015-07-14
    • 1970-01-01
    • 2011-05-30
    • 2011-08-01
    • 1970-01-01
    • 2011-02-03
    相关资源
    最近更新 更多