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