Um das Ganze etwas klarer zu machen, werde ich ein bisschen weiter ausholen:
Jedes Thread-Objekt hat eine Methode Execute. Der Code der hier drin steht, wird parallel zu dem restlichen Code deiner Anwendung ausgeführt. Wenn dein Thread-Objekt noch andere Methoden hat, stört das nicht. Allerdings werden diese nicht zwangsläufig parallel zu deinem restlichen Programm ausgeführt.
Wenn deine Methode WalkTo also laufend ausgeführt werden soll, so müsste Thread.Execute in etwa so aussehen:
Delphi-Quellcode:
repeat
Synchronize(WalkTo)
until terminated;
Den Parameter APoint würde ich als Eigenschaft in das Thread-Objekt aufnehmen.
Application.ProcessMessage ist sowohl hier, als auch in WalkTo unnötig, da deine Anwendung ja sowieso parallel zum Thread weiterläuft und damit auch Nachrichten verarbeitet.
Wenn du WalkTo mit Synchronize aufrufst (um Konflikte bei Zugriffen auf die Form und deren Komponenten zu vermeiden), darfst du Synchronize in WalkTo nicht mehr verwenden.
"Electricity is actually made up of extremely tiny particles called electrons, that you cannot see with the naked eye unless you have been drinking." (Dave Barry)