繁体   English   中英

FireMonkey:如何将下一个控件集中在 vkReturn 上?

[英]FireMonkey: How to focus the next control on vkReturn?

经典的 VCL 问题......但如何在FireMonkey 中做同样的事情

我有几个标准的TControl可以专注......

例如,在某些TEdit ,如果按return key ,我想移到下一个可聚焦控件

我尝试了不同的方法但没有成功(在 13 时用 9 替换密钥、keychar,...,将关键事件转发到表单,...)

当然,因为它是 FMX,我想要一个适用于所有平台的解决方案......

如果可以避免

  • 浏览父母的 Children 属性,
  • 有不同的代码段来解决不同的平台
  • 硬编码制表符序列
  • ...,这会很棒;o)

您可以将以下代码放入窗体的OnKeyDown事件中:

  if Key = vkReturn then begin
    Key := vkTab;
    KeyDown(Key, KeyChar, Shift);   
  end;

如果只希望某些控件具有该行为,则必须在这些控件的OnKeyDown事件中调用此代码。

请注意,KeyDown必须调用TForm.KeyDown才能使其正常工作。

(用XE2测试)

除了建议的答案之外,要以编程方式移至下一个控件,可以使用通过 TFMXControlClassHelper 提供的 SelectNext 方法:

https://codeverge.com/embarcadero.delphi.firemonkey/fmx-how-to-programmatically-mov/2031600

它使用 GetTabList(返回 ITabList 接口)和 FindNextTabStop(返回 IControl 接口)和 SetFocus

不过,根据https://stackoverflow.com/a/36715134/903783 的说法,“firemonkey 框架禁止在某些事件中更改焦点。为了更改焦点,请向表单发送延迟消息。” (指的是处理程序中 TabControl 的 TabChange 事件,因为您似乎无法使用 SetFocus 来聚焦子控件)。 所以看看那里有更安全的方式来做“SetFocus”

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM