for o:= 0 to frm_Main.EditMaxKat.Value do
Das darf so aber nicht in dem Thread stehen, sofern frm_Main ein Formular ist.. Gib die "Value" dem Thread im Konstruktor mit, oder setze das nach Create und vor Start als Property des Threads. Niemals auf
VCL zugreifen von einem Thread aus.
Zu deinem Problem kann ich leider nichts weiter sagen... Meinst du denn, dass es Sinn macht, dass ein Thread andere Threads erstellt und sich dann direkt beendet? Dann können die anderen Threads ja gleich im Hauptthread erstellt werden.