Naja, es ist eine Form, die zu dem Thread "gehört" und auch nur dann erzeugt werden soll, wenn es den Thread gibt bzw. dieser erstellt wurde. Er soll sozusagen der "Owner" für das Form sein und hat auch seine entsprechenden Semaphoren und
VCL Zugriffe auf die Form...
Form =
GUI
Thread = Logik
Da man das -siehe Sir Rufo- nicht mischen soll, liegt hier ein Designproblem vor. Aber es ist schon klar, was Du bezwecken willst.
Führe dazu eine Klasse ein, die sowohl den Thread startet als auch das Formular sichtbar macht. Nennen wir die mal 'ThreadController'. Der Thread teilt dem ThreadController mit,
- wenn er gestartet wird => Form sichtbar machen
- wenn er beendet wird => Form unsichtbar machen
- wenn es etwas darzustellen gibt => Darstellen
Der Thread kann das über Synchronize-Aufrufe so steuern, das sich alles schön im Kontext des Mainthreads ausgeführt wird. Wenn der Thread das dann auch noch über Events löst, hast Du Form und Thread komplett entkoppelt, d.h. der Thread kennt die Form nicht, meldet aber per Event Änderungen an seinem inneren Zustand. Und der ThreadController sorgt dafür, das diese Änderungen in der Form landen.
Der Thread kann bzw. sollte nach außen hin komplett unsichtbar sein, d.h. Alles läuft über den ThreadController.