سلام
من در توابع تو در تو از چنین کدی استفاده می کنم:
        ExitApp:=true;
Application.Terminate;
Application.ProcessMessages;

استفاده می کنم .و بعد از خروج متغیر رو بررسی می کنم ولی باز برنامه زود متوقف نمیشه.(حتی پیغامی که در برنامه گذاشتم و چنین کدی رو بعدش اجرا می کنم دو بار ظاهر میشه)
کدهای زیر هم بی فایده بودند:
        SendMessage(Application.Handle, WM_SYSCOMMAND,SC_Close,0);
sendmessage(self.Handle,WM_QUIT,0,0);
CallTerminateProcs;

راهی نیست برنامه منتظر خروج از توابع نشه و یک دفعه به پایان برسه؟