【问题标题】:TSearchBox.OnKeyUp event ignores ENTER key in Delphi 11TSearchBox.OnKeyUp 事件忽略 Delphi 11 中的 ENTER 键
【发布时间】:2021-11-15 09:29:36
【问题描述】:

当在 Delphi 中使用 TSearchBox 控件时,我按下 ENTER 键 (13) 来运行某个功能。只需:

If key = 13 then DoSomeThing;

更新到 Delphi 11 后,这不再起作用。我可以捕捉任何角色,但不是 13。

有什么想法吗?

【问题讨论】:

  • 您使用的是 VCL 还是 FMX?
  • 我正在使用 VCL。

标签: delphi delphi-11-alexandria


【解决方案1】:

这是故意的!在 Delphi 11 之前,TSearchBox 打算在其 KeyPress() 方法中处理 VK_RETURN,但没有这样做,因为它甚至没有得到那个密钥。在 Delphi 11 中,这已通过使用 TSearchBox 处理 CM_WANTSPECIALKEY 来解决。

对应的QP报告为RSP-30203: TSearchBox must implement CM_WANTSPECIALKEY

【讨论】:

  • 这意味着您现在应该能够在按下ENTER 时使用TSearchBox.OnInvokeSearch 事件,如最初记录的那样:“如果SearchIndicatorsbiTextOnInvokeSearch 也按下 Enter 键时发生。"
  • 谢谢@Uwe,这很有帮助。我通过从 OnKeyUp 到 OnKeyPressed 事件中删除“按 Enter 键”的处理来修改我的代码。此事件捕获 Enter 键,就像之前的 OnKeyUp 一样。可能要感谢,当然要感谢雷米。顺便说一句,我不明白如何处理 CM_WANTSPECIALKEY。
  • @JGMS CM_WANTSPECIALKEY无关。 TSearchBox 在内部处理 CM_WANTSPECIALKEY 以便接收 ENTER 按下。
猜你喜欢
  • 2013-07-22
  • 1970-01-01
  • 2017-12-30
  • 2017-11-23
  • 1970-01-01
  • 2011-01-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多