Die Probleme mit ersterer Methode kann ich bestätigen, "massiver" werden die, wenn man andere Kompontenten abhängig von der Maus sichtbar/unsichtbar schaltet oder in der Größe verändert.
Ich weiß allerdings nicht, warum die das einzig wahre sein soll, oder warum nur eine einzige Methode "die" wahre Methode sein soll
Anstelle des Timers habe ich schonmal das OnIdle der Application verwendet, und halt die Events des Formulares. Also halte ich Varianten 2 und 3 prinzipiell auch nicht für total verkehrt.
Übrigens: anstelle der Zuweisung (hier an Color) würde ich den aktuellen Status erst überprüfen, das vermeidet ggfls. überflüssiges Neugezeichne.