Ein Form einfach mal so in einem neuen Thread "laufen zu lassen" ist mit der
VCL nicht wirklich möglich; ein
Synchronize
ist in jedem Falle notwendig. Dein
DoStep
z.b. synchronisiert den Zugriff auf
TForm.Left
nicht korrekt.
Hier wiederrum ergibt sich das Problem, dass Synchronize sowieso wieder den Workload in den Main-Thread auslagert, weshalb du bei deinem FadeIn/Out praktisch nichts gewonnen hast. Dafür würde ich eher einen Timer verwenden.