Moin Karstadt,
mit Application.Terminate habe ich ein kleines Problem.
Nicht, dass es nicht funktionieren würde, aber solche Routinen wie OnClose und OnCloseQuery werden dann nicht mehr verarbeitet (was natürlich manchmal auch gewünscht sein kann). Deshalb nehme ich, i.d.R., nur Close im Hauptformular.
Aber noch einmal zu Deinem Problem:
Die Lösung hast Du doch schon selber geschrieben, mit Deinem if-then-else-Konstrukt.
Für den Fall, dass schon ein passendes Fenster gefunden wurde, werden CreateForm und Run einfach nicht mehr aufgerufen.
Den Aufruf von Terminate, kannst Du dann
IMHO auch weglassen.