Ausdiesem Grund packe ich das gern in die OnPaint der Mainform (mit einer Firstpaint-Variable). So auch dieses mal. Allerdings bleibt dann wohl der Fokus noch auf der Mainform.
Jetzt habe ich im OnPaint noch ein Inherited; Application.ProcessMessages;
vor dem modalen Aufruf der Loginform eingesetzt, damit alle Zeichenvorgänge und Nachrichten abgearbeitet sind.
Entschuldige bitte diese drastischen Worte, aber falscher kann man es wirklich kaum machen. Im OnPaint einen modalen Dialog aufrufen ist schon ein konzeptioneller Fehler und dann noch die auftretenden Probleme mit einem Application.ProcessMessages kitten ist wie den Teufel mit dem Beelzebub austreiben.
Es gibt genügend Möglichkeiten, den Login-Dialog sauber aufzurufen. Welche davon geeignet sind, hängt von deiner Delphi-Version und einigen anderen Umständen und Vorgaben ab.