Position wird "nur" beim Anzeigen (Show, bzw. kurz nach dem Create) ausgewertet und dementsprechend werden Top und Left gesetzt.
Die Position soll nicht ausgewertet, sondern nach Änderung sofort gesetzt werden, d.h., wenn die Positionsvariable des betreffenden Formulares einen neuen Wert zugewiesen bekommet, soll die Position des Formulares auf dem Bildschirm entsprechend gesetzt, angepaßt, verschoben werden! Dieses Verhalten kenne ich jedenfalls seit Delphis Urzeiten von den
VCL-Formularen so. Welchen Sinn hat denn sonst das Verändern der Positionsvariablen zur Laufzeit?!
Um mal mein Anliegen etwas zu verdeutlichen, erstellte ich ein Beispielprojekt inkl. Compilat (Anhang). Ich bemühte mich, es so klein wie möglich zu machen (32 Bit, release, 7zip-Komprimierung, die auch von Winrar gelesen werden kann).
Man kann auf jeden beliebigen Button klicken, es tut sich überhaupt nichts mit einer anderen Positionierung des FMX-Formulares. Soll das so sein?
Mit kleinen Änderungen compiliert das Projekt auch mit XE2 und funktioniert dort genausowenig.
Wenn ich Dich recht verstehe, müßte demnach der ButtonClick ein OnShow-Ereignis auslösen, damit das Formular die Positionierung sofort übernimmt, nicht wahr?