【发布时间】:2017-01-19 10:06:23
【问题描述】:
以编程方式设置 TSwitch 的 IsChecked 属性时,将调用事件 OnSwitch。如何避免这种情况?我希望仅在用户交互的情况下调用 OnSwitch 事件,当用户通过单击切换控件时。
【问题讨论】:
-
也许(我现在无法测试)您可以使用
OnClick而不是OnSwitch来检测用户操作。如果您以编程方式更改状态,OnClick应该不会发生。 -
问题是在 OnClick 事件中我没有得到正确/新的开关状态。例如,如果开关设置为关闭并且我将其更改为打开,我会得到以前的关闭状态(OnChecked = false)。
-
好的,很抱歉。我知道另一种可行的可能性是在以编程方式更改状态之前将
OnSwitch设为nil,然后立即重置OnSwitch。 -
不只是Firemonkey,或者这个控件也可以发生在VCL中。在这方面,Delphi 似乎并不十分一致。在某些情况下以及复杂的相互关联的控制下,有时可能会导致致命的拥抱。 Tom Brunberg 的解决方案似乎是一个不错的解决方案。我过去使用过类变量,但它比较麻烦。
标签: android delphi firemonkey