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

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

Автор Тема: Изменение одной кнопкой значений нескольких переменных  (Прочитано 16352 раз)

IvankO

  • Новичок
  • *
  • Сообщений: 9
    • Просмотр профиля
Помогите, ткните носом если есть готовый ответ.
Необходимо при нажатии на кнопку менять значение от 2 до 4 тегов типа bool . Как это реализовать?При нажатии на кнопку я шлю единицы при отпускании нули.

Simple_Scada

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

Для этого можно создать кнопку, выбрать тип "Без фиксации" и указать в основной переменной кнопки первую переменную(у нас в примере это будет переменная "vrBtn_1"). Затем, необходимо создать скрипт по событию OnDataChange кнопки и написать код:
Код: (delphi)
begin
  if Sender is TM_Button then    // проверяем, что Sender это кнопка
    with Sender as TM_Button do  // приводим Sender к типу "TM_Button"
      begin
      { записываем в переменные значение переменной, которая связана с кнопкой }
        vrBtn_2.Value := Value;
        vrBtn_3.Value := Value;
        vrBtn_4.Value := Value;
      end;
end.
,где vrBtn_2, vrBtn_3, vrBtn_4 переменные, значения которых необходимо менять по значению переменной кнопки. При нажатии на кнопку во все переменные будет записываться 1, при отпускании 0.

IvankO

  • Новичок
  • *
  • Сообщений: 9
    • Просмотр профиля
Спасибо большое

IvankO

  • Новичок
  • *
  • Сообщений: 9
    • Просмотр профиля
Задача немножко усложнилась  :( надо что бы переменные
        vrBtn_2.Value := Value;
        vrBtn_3.Value := Value;
        vrBtn_4.Value := Value;
меняли свое состояние не мгновенно а через секунду-две. Подскажите знатоки  :(

Neskad

  • Новичок
  • *
  • Сообщений: 31
    • Просмотр профиля
Задача немножко усложнилась  :( надо что бы переменные
        vrBtn_2.Value := Value;
        vrBtn_3.Value := Value;
        vrBtn_4.Value := Value;
меняли свое состояние не мгновенно а через секунду-две. Подскажите знатоки  :(
Проще всего через таймеры.
  • Cоздать внтуреннюю переменную (если её ещё нет), с типом Integer, с именем, например ButtonVar. Привязать ButtonVar к требуемой кнопке.
  • Cоздать внтуреннюю переменную с типом DateTime, например с именем timerVar.
  • Затем к событию onClick кнопки, привязать скрипт, содержащий такую строку:  TimerStart(timerVar, 0);
  • Затем создать ещё один скрипт с типом события "Изменились переменные" и добавить timerVar в список отслеживаемых скриптом переменных
Сам скрипт должен содержать такой код:
Код: (delphi)
const
  TIMEOUT: word = 2; // пауза перед изменением в секундах
begin
  if (TimerGetState(Variable) = 1) then
    if SecondsBetween(Variable.Value, 0) >= TIMEOUT then
      begin
        TimerReset(Variable);
        vrBtn_2.Value := ButtonVar.Value;
        vrBtn_3.Value := ButtonVar.Value;
        vrBtn_4.Value := ButtonVar.Value;
      end;
end.

IvankO

  • Новичок
  • *
  • Сообщений: 9
    • Просмотр профиля
Еще раз спасибо