如果TAction
链接到对象,例如TToolButton
(项目TToolBar
)或TActionClientItem
(项目TActionToolBar
)且该对象是在运行时可见,然后每当你在窗体中移动鼠标时(除工具栏之外的任何地方),基于可见TA的数量,似乎在CPU上进行了额外的加载,这与移动鼠标时没有任何关系。 TAction链接的项目在前面提到的任何一个栏上都可见。
很明显,额外负载的显着百分比完全取决于您正在运行的装备类型,但我注意到当您拥有应用程序时,实际差异可能很大:
所以问题是为什么可见项目链接的TAction组件会影响鼠标移动的处理?
答案 0 :(得分:7)
动作的设计基于动作的空闲时间更新。移动鼠标时,应用程序会收到大量排队的消息。每次清空队列时,应用程序都被视为空闲,并且所有操作都会更新。这可能导致高CPU利用率。
这个问题在VCL中众所周知并得到承认。例如,请查看TApplication.ActionUpdateDelay。
答案 1 :(得分:1)
从内存中:因为每次鼠标移动都会触发OnUpdate事件。至少每个鼠标移动都会触发所有操作的枚举,以查看是否已分配其OnUpdate事件以便可以触发它们。当链接的控件不可见时,不会触发这些事件。