如果 TAction
链接到一个对象,例如 TToolButton
(TToolBar
的项目)或 TActionClientItem
(TActionToolBar
的项目)并且该对象在运行时可见,那么每当您在表单中移动鼠标(除了工具栏之外的任何地方),似乎根据可见 TAction 的数量在 CPU 上完成额外负载,这与在前面提到的任何一个条上都没有 TAction 链接项可见时移动鼠标相比。
很明显,明显的额外负载百分比完全取决于您正在运行的设备类型,但我注意到,当您的应用程序具有以下功能时,实际差异可能会很大:
那么问题来了,为什么可见item链接的TAction组件会影响鼠标移动的处理呢?
最佳答案
Action 的设计基于 Action 的空闲时间更新。当您移动鼠标时,应用程序会收到大量排队的消息。每次队列被清空时,应用程序被认为是空闲的,所有的 Action 都被更新。这会导致高 CPU 利用率。
这个问题在 VCL 中广为人知并得到承认。例如,看看 TApplication.ActionUpdateDelay 。