カスタムスタイルのチェックマークを使用しているため、チェックボックスのアニメーションを変更しようとしています。知られているように、通常のチェック ボックスにはデフォルトで 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 に変更し、スタイル デザイナーで反応を観察して確認しました。