Простое перемещение объектов шаблона можно реализовать гораздо проще.
1. Каждому объекту шаблона назначаем подстановки Variable=%DX% VariableEx=%DY%
2. В события OnDataChange и OnDataChangeEx каждого объекта шаблона прописываем простейший скрипт with TM_Object(Sender) do begin
X := X + Variable.AsInt;
Y := Y + VariableEx.AsInt;
end;
3. Делаем сколько угодно экземпляров шаблона и в их подстановки прописываем реальные переменные. Если всем экземплярам прописать одинаковые переменные, все объекты будут смещаться синхронно на одинаковые величины
4. Меняем переменные - "шаблонные" объекты движутся.