Wenn ich das mal so sagen darf: Der Code ist das perfekte Gegenbeispiel bzgl. der Verwendung von Application.Processmessages
Ich vermute mal, das Problem kommt daher, dass das ganze im OnActivate passiert.
Versuch mal einen Timer (Interval=1 und enabled) aufs Form zu tun, und den ganzen Code ins OnTimer-Event zu verschieben. Außerdem ganz am Anfang des OnTimer-öEvents den Timer ausschalten.