使用TNumberBox
控件(至少在Windows中也可能在其他平台上使用),当我输入新值,然后在读取TButton
属性后按按钮(TNumberBox.Value
)保存更改,它会返回进行修改之前的原始值。事实证明,直到控件失去焦点之后,才能访问此值。
现在用于保存更改的按钮,我故意禁用了它的CanFocus
属性以及应用程序中的所有按钮。这是因为使用我使用的样式(Jet),一个集中的按钮看起来很糟糕(深灰色背景上的黑色文本)。更不用说,在移动平台上,在我看来,专注几乎是无用的。
否则,如果我没有在此保存按钮上禁用CanFocus
,则将焦点从TNumberBox
上正确取下,并且其Value
属性可以。但是,当禁用保存按钮上的CanFocus
时,焦点永远不会脱离此控件,因此读取其Value
属性将返回旧值。
如何确保Value
属性返回正确的新值而不将保存按钮更改为CanFocus
?
启用KillFocusOnReturn
没什么用,因为用户必须知道他们需要按“返回”或“ Enter”,这不是一个选项。
NOTE
如果您要使用TNumberBox.OnChangeTracking
事件,此问题也会继续存在。我不确定如果您甚至无法读取新值,此事件将如何有用。
我发现FireMonkey需要<ENTER>
或失去焦点才能接受任何形式的编辑中的值。我认为您实际上不需要杀死对收益的关注。
我至少发现了一个肮脏的解决方法。启用按钮的CanFocus
属性,然后单击按钮,首先应该将焦点重新设置为TNumberBox
控件。这样既可以将焦点从控件上移开(从而刷新值),又可以将焦点从按钮上移开(从而避免了糟糕的外观)。
今天有同样的问题,有没有“好的”解决方案?