Du könntest zwischen den einzelnen Schritten in der Execute-Prozedur deiner Thread-Klasse solche Abfragen einbauen:
Delphi-Quellcode:
// ...
if (not Self.Terminated) then
begin
// Rechnen
end;
//...
Damit würde an der Stelle abggebrochen, wenn du den Thread beendest.
Für das Beende reicht dann ein einfaches
NameDerThreadklassen-Instanz.Terminate;
- edit -
Für das zweite Problem bitte einen extra Thread aufmachen.
Wenn man was über Forms und Cursor sucht, erwartet man sowas nicht in einem Thread mit dem Titel "Thread hart beenden".