0

我正在尝试修改复选框动画,因为我正在使用自定义样式的复选标记。众所周知,普通复选框默认关联了 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 并观察样式设计器中的反应来检查它。

4

0 回答 0