Da würde ich eher die Mainform ausblenden (Visible := False) und nur einblenden, wenn sie wirklich benötigt wird.
Irgend wann wechseln dann die Fenster und die MainForm ist auf dem Bildschirm das "obere" Fenster, und das modale Fenster liegt dadrunter. Die MainForm kann und will ich dann natürlich nicht bedienen, da ich ja Form2 Modal geöffnet habe. Ein Klick auf die Form2 und es ist wieder so, wie es sein soll.
Das hört sich für mich an, als ob den Mainform zwischendurch den Fokus erhält und dadurch in den Vordergrund kommt.
Darauf basierend ein paar Überlegungen:
- Ggf. Mainform.Enabled := False; setzen, solange im Form2 gearbeitet werden soll. Dann wären keine Eingaben im Mainform möglich, wie das dabei mit dem Fokus ist kann ich aktuell nicht testen, denke aber der Fokus kann dann auch nicht aufs Mainform gesetzt werden.
- Ansonsten für die Zeit, wo Form2 da ist Mainform.Canfocus := False; setzen könnte helfen.
- Wenn das nicht funktioniert kannst du nicht im Mainform, wenn es in den Vordergrund kommt UND Form2 angezeigt wird, den Wechsel in Form2 anstoßen (setfocus)?