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

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

Автор Тема: Две кнопки - переключатель в шаблоне  (Прочитано 22481 раз)

sir

  • Новичок
  • *
  • Сообщений: 18
    • Просмотр профиля
Здравствуйте!
На форуме нашел сообщение от 2014 года, где Вы обещали создать "переключатель", но в Скаде он так и не появился.
Вопрос. Как создать переключатель по двум клавишам ПУСК и СТОП в шаблоне?
Нажимаешь на ПУСК - кнопка подсвечивается "зеленым" и деактивируется, Кнопка СТОП подсвечивается серым, значение по кнопке ПУСК, например 6 - фиксируется в переменной, привязанной к кнопке.
Нажимаешь на кнопку СТОП - кнопка подсвечивается "красным", кнопка ПУСК подсвечивается "серым" и деактивируется, значение по кнопке СТОП, например 5 - фиксируется в переменной, привязанной к кнопке.
В шаблоне мы можем работать только с тем объектом шаблона, который вызвал скрипт. Как обратиться к соседнему объекту в шаблоне (кнопке)?

Simple_Scada

  • Администратор
  • *****
  • Сообщений: 1385
    • Просмотр профиля
Re: Две кнопки - переключатель в шаблоне
« Ответ #1 : 28 Января 2026, 22:05:14 »
Здравствуйте.

Для описанной задачи проще всего использовать одну кнопку "с фиксацией" и двумя состояниями: Пуск и Стоп. См. пример в приложенном проекте.

Если обязательно нужно две отдельных кнопки, то потребуется:
1. Создать две кнопки с двумя состояниями.
2. Настроить требуемые цвета кнопки для каждого состояния и задать нужные значения. Например, у кнопки "ПУСК" для первого состояния задать значение 6 и серый цвет, для второго состояния задать значение 5 и зелёный цвет. По аналогии настроить кнопку "СТОП".
3. Создать универсальный скрипт для блокировки кнопки:
Код: (delphi)
begin
  if Sender is TM_Button then     // проверяем, что Sender это кнопка
    with Sender as TM_Button do   // приводим Sender к типу "TM_Button"
      // изменить доступ к кнопке в зависимости от значения переменной (сравниваем значение переменной со значением указанным в свойстве "Значение")
      Enabled := not (AsInt = States[0].Value);
end.
4. Назначить скрипт на событие "OnDataChange" кнопок.

Пример проекта во вложении.

sir

  • Новичок
  • *
  • Сообщений: 18
    • Просмотр профиля
Re: Две кнопки - переключатель в шаблоне
« Ответ #2 : 29 Января 2026, 13:30:59 »
Благодарю за помощь!