Das Setzen von Modalresult im OnShow oder OnActivate Event ist leider zu früh, da im Showmodal erst danach die Schleife beginnt, diedie Abbruchbedingung enthält.
Hier nur ein Auszug:
Delphi-Quellcode:
try
Show;
try
SendMessage(
Handle, CM_ACTIVATE, 0, 0);
ModalResult := 0;
repeat
...
...
until ModalResult <> 0;
Wenn man die Form im OnShow oder OnAvtivate schließen möchte, dann per
PostMessage(FormHandle, WM_CLOSE, 0, 0);
Vielleicht wäre es besser im OnShow einen Thread zu starten, der die Methode ausführt und über Synchronice die Anzeige zu aktualisieren und im OnTerminate das Form zu schließen.