我正在尝试修改复选框动画,因为我正在使用自定义样式的复选标记。众所周知,普通复选框默认关联了 4 个 TRectAnimations,以适应 IsMouseOver 和 IsChecked 触发器的所有组合。我试过那些无济于事。
因此,为了理解动画是如何工作的,我将动画减少到仅适用于 IsChecked 触发器及其逆触发器的动画。在样式设计器中为动画设置了以下非默认设置:-
Duration := 1
Enabled := True
PropertyName := SourceRect
Start
Bottom := 0
Left := 0
Right := 0
Top := 0
Stop
Bottom := 46
Left := 0
Right := 46
Top := 0
Trigger := IsChecked=true
TriggerInverse := IsChecked=false
我现在面临以下奇怪现象:-
当我在对象检查器中手动操作复选框的 IsChecked 字段时,复选标记会正确显示和消失,但是当应用程序运行时,复选标记仍然存在,并且在重复单击时不会发生任何活动(尽管事件会被触发)。
如果我尝试手动将 TSubIImage 的 SourceRect 字段设置为 0,它永远不会被保存并恢复为以前的值。
动画的 Duration 字段的行为也是如此。它每次都恢复到 1E-5。
请帮我正确地做到这一点,我只想让标记在复选框的 IsChecked 字段更改时动画并出现/消失。
编辑 1 - 新发现
原来 SourceRect 字段重置是由超出范围的值引起的。它不会给出错误...
持续时间字段具有相同的错误,但有时在设置为 0.2 时不会重置。
动画从控件继承触发器,但它们仅在最新父布局/面板覆盖的区域中捕获。它们也不会在对象后面被捕获,动画是子对象。通过将触发器更改为 IsMouseOver 并观察样式设计器中的反应来检查它。