Ich habs mal in einer VM getestet. Die startet die Threads anscheinend nicht, oder zeigt die Formulare eben erst gar nicht an. Und der Debugger von Turbo Delphi ist in der VM sogar abgestürzt.
Wenn ich das ganze Konzept von hinten aufrolle, klappt alles erwartungsgemäß.
Also nicht wie bisher: Mainform startet Thread, Thread startet und verwaltet Threadform, sondern Mainform startet ThreadForm und ThreadForm startet Thread. Dadurch sind alle Formulare im Mainthread, so wie man es konzeptionell wahrscheinlich auch immer machen würde. Aber beim experimentieren probiert man auch mal anderes
==> Also ein
VCL-Formular (wahrscheinlich alle TWinControls) kann nicht in einem Thread existieren (auch nicht, wenn es von außen komplett abgekapselt ist / zu sein scheint).
Begründung meinerseits fällt mir leider noch zu schwach aus. Aber es gibt globale Variablen auf die ein TWinControl ungesichert zugreift (was eher eine globale Liste aller TWincrontrol.WndProc ist).
(diser Post beinhaltet ein verstecktes *push*
)
Dieser Beitrag ist für Jugendliche unter 18 Jahren nicht geeignet.