Simple-Scada forum

Simple-Scada 2 => Ваши вопросы => Тема начата: Андрей Косоротов от 26 Августа 2021, 16:40:08

Название: Перемещение объекта в шаблоне при помощи скрипта
Отправлено: Андрей Косоротов от 26 Августа 2021, 16:40:08
Добрый день!

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

Спасибо.
Название: Re: Перемещение объекта в шаблоне при помощи скрипта
Отправлено: pan2000 от 26 Августа 2021, 18:56:01
   Здравствуйте.

Сначала нужно получить начальные значения координат объекта из подстановки шаблона. Например, в шаблоне определен объект 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.

Перемещение объекта не ограничивается шаблоном или экраном, и при больших (абсолютных) перемещениях выходит за пределы экрана.
Пример во вложении.
Название: Re: Перемещение объекта в шаблоне при помощи скрипта
Отправлено: Андрей Косоротов от 27 Августа 2021, 08:02:40
Спасибо за ответ! Решил вопрос несколько иначе, но и ваш вариант буду иметь в виду.