[英]FireMonkey: How to focus the next control on vkReturn?
经典的 VCL 问题......但如何在FireMonkey 中做同样的事情?
我有几个标准的TControl
可以专注......
例如,在某些TEdit
,如果按return key
,我想移到下一个可聚焦控件
我尝试了不同的方法但没有成功(在 13 时用 9 替换密钥、keychar,...,将关键事件转发到表单,...)
当然,因为它是 FMX,我想要一个适用于所有平台的解决方案......
如果可以避免:
您可以将以下代码放入窗体的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.