Delphi 如何对复选框使用TrecAnimation
我试图修改复选框动画,因为我正在使用自定义样式的复选标记。众所周知,正常复选框默认有4个关联的TrecAnimation,以满足IsMouseOver和IsChecked触发器的所有组合。我试过了,但没用 因此,为了理解动画是如何工作的,我将动画简化为只在IsChecked触发器及其逆触发器上工作的动画。将在样式设计器中为动画设置以下非默认设置:-Delphi 如何对复选框使用TrecAnimation,delphi,user-interface,firemonkey,delphi-xe3,Delphi,User Interface,Firemonkey,Delphi Xe3,我试图修改复选框动画,因为我正在使用自定义样式的复选标记。众所周知,正常复选框默认有4个关联的TrecAnimation,以满足IsMouseOver和IsChecked触发器的所有组合。我试过了,但没用 因此,为了理解动画是如何工作的,我将动画简化为只在IsChecked触发器及其逆触发器上工作的动画。将在样式设计器中为动画设置以下非默认设置:- Duration := 1 Enabled := True PropertyName := SourceRect S
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
我现在面临以下奇怪的情况:-
- 当我在object inspector中手动操作复选框的IsChecked字段时,复选标记会正确显示和消失,但当应用程序运行时,复选标记会保留在那里,并且在重复单击时不会发生任何活动(不过会触发事件)
- 如果我尝试手动将TSubIImage的SourceRect字段设置为0,它将永远不会保存并恢复为以前的值
- 动画的“持续时间”字段的行为也是如此。每次都会恢复到1E-5
- 结果表明,SourceRect字段重置是由越界值引起的。它没有给出一个错误
- “持续时间”字段具有相同的错误,但有时设置为0.2时不会重置
- 动画从控件继承触发器,但它们仅在最新父布局/面板覆盖的区域中捕获。它们也不会在对象后面捕捉,动画是对象的子对象。通过将触发器更改为IsMouseOver并观察样式设计器中的反应来检查它