Firemonkey TNumberBox-在失去焦点之前无法使用新值

问题描述 投票:1回答:3

使用TNumberBox控件(至少在Windows中也可能在其他平台上使用),当我输入新值,然后在读取TButton属性后按按钮(TNumberBox.Value)保存更改,它会返回进行修改之前的原始值。事实证明,直到控件失去焦点之后,才能访问此值。

现在用于保存更改的按钮,我故意禁用了它的CanFocus属性以及应用程序中的所有按钮。这是因为使用我使用的样式(Jet),一个集中的按钮看起来很糟糕(深灰色背景上的黑色文本)。更不用说,在移动平台上,在我看来,专注几乎是无用的。

否则,如果我没有在此保存按钮上禁用CanFocus,则将焦点从TNumberBox上正确取下,并且其Value属性可以。但是,当禁用保存按钮上的CanFocus时,焦点永远不会脱离此控件,因此读取其Value属性将返回旧值。

如何确保Value属性返回正确的新值而不将保存按钮更改为CanFocus

启用KillFocusOnReturn没什么用,因为用户必须知道他们需要按“返回”或“ Enter”,这不是一个选项。

NOTE

如果您要使用TNumberBox.OnChangeTracking事件,此问题也会继续存在。我不确定如果您甚至无法读取新值,此事件将如何有用。

delphi focus firemonkey delphi-xe8
3个回答
1
投票

我发现FireMonkey需要<ENTER>或失去焦点才能接受任何形式的编辑中的值。我认为您实际上不需要杀死对收益的关注。


0
投票

我至少发现了一个肮脏的解决方法。启用按钮的CanFocus属性,然后单击按钮,首先应该将焦点重新设置为TNumberBox控件。这样既可以将焦点从控件上移开(从而刷新值),又可以将焦点从按钮上移开(从而避免了糟糕的外观)。


0
投票

今天有同样的问题,有没有“好的”解决方案?

© www.soinside.com 2019 - 2024. All rights reserved.