Здравствуйте.
Для этого можно создать кнопку (https://simple-scada.com/help/manual/button.html), выбрать тип "Без фиксации" и указать в основной переменной кнопки первую переменную(у нас в примере это будет переменная "vrBtn_1"). Затем, необходимо создать скрипт по событию OnDataChange кнопки и написать код:
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.
Задача немножко усложнилась :( надо что бы переменные
vrBtn_2.Value := Value;
vrBtn_3.Value := Value;
vrBtn_4.Value := Value;
меняли свое состояние не мгновенно а через секунду-две. Подскажите знатоки :(
Проще всего через таймеры.
- Cоздать внтуреннюю переменную (если её ещё нет), с типом Integer, с именем, например ButtonVar. Привязать ButtonVar к требуемой кнопке.
- Cоздать внтуреннюю переменную с типом DateTime, например с именем timerVar.
- Затем к событию onClick кнопки, привязать скрипт, содержащий такую строку: TimerStart(timerVar, 0);
- Затем создать ещё один скрипт с типом события "Изменились переменные" и добавить timerVar в список отслеживаемых скриптом переменных
Сам скрипт должен содержать такой код:
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.