Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Не получили письмо с кодом активации?

Официальный форум Simple-Scada.

Автор Тема: Перемещение объекта в шаблоне при помощи скрипта  (Прочитано 1875 раз)

Андрей Косоротов

  • Новичок
  • *
  • Сообщений: 5
    • Просмотр профиля
Добрый день!

Надо по изменению значения переменной перемещать объект в шаблоне (например прямоугольник) по горизонтали. Если задавать свойство X числом то объект перемещается на абсолютные координаты на экране. А надо чтобы относительно границ шаблона. Так и не разобрался как сделать.

Спасибо.

pan2000

  • Постоялец
  • ***
  • Сообщений: 226
    • Просмотр профиля
   Здравствуйте.

Сначала нужно получить начальные значения координат объекта из подстановки шаблона. Например, в шаблоне определен объект Field1 с основной переменной %Xcoord%, значение которой определяет смещение этого объекта относительно начального положения при запуске проекта.
Скрипт по событию "Инициализация шаблонного объекта":
Код: (delphi)
var Obj: TM_Object;
begin
  Obj := GetTemplateObject('Field1');
  if Obj = nil then exit;
  obj.Variable.LowAlarm := Obj.X;     // Х-координата исходного положения объекта хранится в нижней аварийной границе основной переменной
//  Obj.VariableEx.Value :=  Obj.X;    // при желании или необходимости для хранения можно использовать доп.переменную объекта
end.

Собственно перемещение объекта. Скрипт "Пользователь ввел значение в поле":
Код: (delphi)
begin
  with Sender as TM_Object do
    X := AsSingle + Variable.LowAlarm;    // начальная координата хранится в одном из свойств переменной
//    X := AsSingle + VariableEx.Value;    // начальная координата хранится в отдельной (дополнительной) переменной
end.

Перемещение объекта не ограничивается шаблоном или экраном, и при больших (абсолютных) перемещениях выходит за пределы экрана.
Пример во вложении.

Андрей Косоротов

  • Новичок
  • *
  • Сообщений: 5
    • Просмотр профиля
Спасибо за ответ! Решил вопрос несколько иначе, но и ваш вариант буду иметь в виду.
« Изменён: 28 Августа 2021, 09:27:51 от Simple-Scada »