Das ist eine Konstellation, auf die die
VCL nicht direkt ausgelegt ist.
Schau mal, ob vielleicht OnCloseQuery vorher getriggert wird. Dann könntest Du dort ein Flag setzen und dies für einen vorzeitigen Abbruch der Schleife prüfen.
Ansonsten gibt es vielleicht eine Message, die man noch abfangen kann.
Aber so etwas kann dann auf späteren Delphi-Versionen oder auf verschiedenen Windows-Versionen und -Rechnern schon wieder ganz anders laufen.
Vielleicht kannst Du Dein SubFormular ja auch durch ein Panel ersetzen, das Du einfach in Dein Hauptformular einsetzt.
Grundsätzlich ist sicher sinnvoll, solche längeren Aufgaben in Threads auszulagern. Dazu muss man dann aber auch die konkreten Zuständigkeiten der einzelnen Formulare klären...
ProcessMessages ist immer mit Vorsicht zu genießen.
Nee, OnCloseQuery verhält sich leider genauso - das hatte ich schon ausprobiert. Ich hab das Problem ja auch nur, weil ich das Fenster modal öffnen muss, sonst geht das mit OnClose und OnCloseQuery alles problemlos.
Natürlich ist ProcessMessages irgendwie etwas Getrickse, aber ich finde, dass man in vielen (einfacheren) Fällen damit sehr gut (und problemlos) arbeiten kann, ohne einen großen Overhead für eine andere Lösung basteln zu müssen. Aber in diesem Fall geht's wohl nicht...