Hola nlsgarcia.
Se hace ineficiente recorrer todos los controles del form dentro del evento que se dispara cada vez que cambia el control activo, para así obtener quien tiene el foco. Ese dato lo podemos tomar de la propiedad
Screen.ActiveControl, que dentro del evento
OnActiveControlChange, ya tiene al nuevo portador del foco de entrada.
Basta con salvar previamente el control que lo poseía para restaurarlo al estado anterior y luego darle el color deseado al nuevo control activo. Que, si ocurre otro cambio de foco, pasará a ser el control que lo perdió y así, cíclica y sucesivamente con cada uno de ellos.
Saludos.