Mit einer globalen Var und dann: dynform := TFrmGMaps(Application.findcomponent(threadname)); geht es ...
Warum nicht Application. x..... ?
Du hast bestimmt schon gehört, dass man globale Variablen vermeiden soll.
Dafür gibt es mehrere Gründe; die vollständige Liste kann ich leider nur auf Englisch anbieten:
http://c2.com/cgi/wiki?GlobalVariablesAreBad
Globale Variablen sind sozusagen das Gegenteil von Objekt-orientierter-Programmierung bei der man versucht, alle Aspekte möglichst lokal zu behandeln. (Stichwort:
Datenkapselung)
Du hast bestimmt vergessen die Klasse "TMyThread" zu erweitern.
Delphi-Quellcode:
TMyThread = class(TThread)
public
dynform : TFrmGMaps; // <== das fehlt bei dir
procedure execute; override;
end;
Hier noch das Grundprinzip:
Bevor ein Thread gestartet wird, gibt man ihm
von Aussen alle Informationen, die er braucht.
Der Thread kann sich dann ganz auf seine Aufgabe konzentrieren; er braucht nicht Application.FindComponent aufrufen, weil er sämliche Infos (Objekte, Daten, Werte) schon beim Start bekommen hat.