Welcome to 16892 Developer Community-Open, Learning,Share
menu search
person
Welcome To Ask or Share your Answers For Others

Categories

If a TAction is linked to an Object such as TToolButton( Item of TToolBar ) or TActionClientItem( Item of TActionToolBar ) and that Object is visible on runtime, then whenever you move the mouse in the form (anywhere but the Toolbars), there seems to be extra load being done on the CPU based on the number of visible TActions, that is in comparison to moving the mouse when none of the TAction linked Items are visible on either of the previous mentioned bars.

It's obvious that the noticeable % of extra load done is completely based on what kind of a rig you are running but what I have noticed is that the actual difference can be significant when you have an application with :

  • a lot of visible TAction linked items
  • a custom component that already performs minor calculations for onMouseOver Events such as changing the appearance of the control
  • a custom Visual Style

So the question is why do visible item linked TAction components affect the processing of mouse movement?

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
thumb_up_alt 0 like thumb_down_alt 0 dislike
1.8k views
Welcome To Ask or Share your Answers For Others

1 Answer

The design of actions is based on idle time updating of actions. As you move your mouse, the application receives lots of queued messages. Each time the queue is emptied, the application is deemed to be idle, and all the actions are updated. And this can lead to high CPU utilization.

This issue is well known and acknowledged in the VCL. For example, take a look at TApplication.ActionUpdateDelay.


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
thumb_up_alt 0 like thumb_down_alt 0 dislike
Welcome to 16892 Developer Community-Open, Learning and Share
...