Estoy usando el evento OnIdle para algunas animaciones simples, y funciona bien. El problema, sin embargo, es cuando el usuario comienza a mover o cambiar el tamaño de la ventana, el evento OnIdle deja de disparar hasta que se completa la operación mover/cambiar tamaño.Delphi: detecta el inicio y el final del movimiento de ventana
Necesito detectar cuando sucede esto, para poder detener todas las animaciones. ¿Pero cómo detecto el movimiento de la ventana?
Usando OnIdle no es realmente una buena idea, ya que hará que la carga de la CPU del 100% en el núcleo activo. Use un evento de temporizador en su lugar, que tiene dos ventajas: disparará también en el bucle de mensaje secundario, por lo que la animación continuará durante el movimiento/cambio de tamaño (que debería ocurrir cuando el arrastre de ventana completa está activo); y podrá establecer una cantidad razonable de pasos de animación por segundo, independientemente de la velocidad del sistema. – mghie
Timer vs inactivo es un tema interesante. Ambos tienen pros y contras, pero para mis pequeñas animaciones decorativas, onidle hará muy bien. – Vegar
Tales "pequeñas animaciones decorativas", si $ usuario no puede desactivarlas, pueden costar mucho tiempo de batería en una computadora portátil. Además, estás robando activamente ciclos de CPU de otras aplicaciones. Pruébelo usted mismo, en realidad, OnIdle tiene solo contras. – mghie