Радиальный индикатор

> [HTML Version](radialind.html)

_(./images/radialind9.png)_

Важно\! Пример радиального индикатора можно найти в демо-проекте на странице "Компоненты" -> "Радиальный индикатор".

Допустим в проекте имеются переменные vrCircleInd1, vrCircleInd2, vrCircleInd3 и т.д., значения которых необходимо отображать на мнемосхеме при помощи радиального индикатора. Для решения данной задачи будем использовать [шаблоны](https://simple-scada.com/help/manual/templateobjects.html).

Создадим новый [шаблон](https://simple-scada.com/help/manual/templateobjects.html) и добавим в него фон радиального индикатора. Если требуется круговой индикатор, то используем компонент "[Фигура](https://simple-scada.com/help/manual/figure.html)" и выберем тип фигуры "Эллипс". Если требуется арочный индикатор, то используем компонент "[Изображение](https://simple-scada.com/help/manual/picture.html)" с текстурой "Геометрические" -> "Арка":

| _[![Фон кругового индикатора](./images/radialind1.png)]_ | _[![Фон арочного индикатора](./images/radialind2.png)]_ |


Поверх фона разместим анимированное изображение индикатора, зададим требуемый цвет и подстановку переменной (например, vrCircleInd%Номер переменной%). Для кругового индикатора используем текстуру "Анимированные" -> "Индикатор круговой". Для арочного индикатора используем текстуру "Анимированные" -> "Индикатор арка":

| _[![Текстура кругового индикатора](./images/radialind3.png)]_ | _[![Текстура арочного индикатора](./images/radialind4.png)]_ |


Теперь необходимо написать универсальный скрипт [по событию OnDataChange](by-obj-event.md) созданного изображения индикатора: 

**(./images/tog_code_1.png) Скрипт анимации радиального индикатора **[(./images/link.png)](https://simple-scada.com/help/script/radialind.html?anchor=scr1)

````
var  
  aFrame: Integer;  
begin  
  // скрипт меняет кадр изображения радиального индикатора по значению привязанной переменной  
  if Sender is TM\_Image then  
    with Sender as TM\_Image do  
    begin  
      // вычисляем значение кадра изображения в зависимости от значения привязанной переменной  
      // 50 - это количество кадров изображения,   
      // если используется стандартное изображение радиального индикатора, то не изменяйте данное значение   
      aFrame := Round(Scaling(Maximum, Minimum, 50, 0, AsFloat));  
      Frame := aFrame;  
      Visible := aFrame <> 0;  
    end;  
end.
````

````
Далее, создадим внутренний фон радиального индикатора с цветом, отличающимся от цвета фона, созданного на первом шаге. Изменяя размер данного слоя, можно регулировать толщину радиального индикатора. Если требуется круговой индикатор, то используем компонент "[Фигура](https://simple-scada.com/help/manual/figure.html)" -> "Эллипс". Если требуется арочный индикатор, то используем компонент "[Изображение](https://simple-scada.com/help/manual/picture.html)" с текстурой "Геометрические" -> "Арка":

| _[![Внутренний фон кругового индикатора](./images/radialind5.png)]_ | _[![Внутренний фон арочного индикатора](./images/radialind6.png)]_ |


Для отображения значения переменной на индикаторе, используем компонент "[Текст](https://simple-scada.com/help/manual/text.html)". В свойстве "Переменная" зададим подстановку, например: vrCircleInd%Номер переменной%. 

| _[![Значение кругового индикатора](./images/radialind7.png)]_ | _[![Значение арочного индикатора](./images/radialind8.png)]_ |


После этого, необходимо написать универсальный скрипт [по событию OnDataChange](by-obj-event.md) объекта "Текст": 

**(./images/tog_code_1.png) Скрипт для отображения значения переменной **[(./images/link.png)](https://simple-scada.com/help/script/radialind.html?anchor=scr2)

````
begin  
  // вывести в компонент "Текст" значение привязанной к нему переменной  
  if Sender is TM\_Text then  
    with Sender as TM\_Text do  
      Text := AsStr;  
end.
````

````
**(./images/tog_code_1.png) Скрипт для отображения значения, переведенного в проценты **[(./images/link.png)](https://simple-scada.com/help/script/radialind.html?anchor=scr3)

````
begin  
  // вывести в компонент "Текст" значение привязанной   
  // к нему переменной, переведенное в проценты  
  if Sender is TM\_Text then  
    with Sender as TM\_Text do  
      Text := IntToStr(Round(Scaling(Maximum, Minimum, 100, 0, AsFloat))) + '%';  
end.
````

````
Шаблон индикатора готов, осталось разместить его на мнемосхеме (в меню "Окна / Шаблоны" выбрать пункт "Вставить шаблон") и заполнить значения подстановок.

