Simple-Scada forum

Simple-Scada 2 => Ваши вопросы => Тема начата: EvgeniySM от 30 Августа 2016, 04:36:55

Название: Работа с кнопками
Отправлено: EvgeniySM от 30 Августа 2016, 04:36:55
Здравствуйте. Очень понравилась ваша SCADA-система простотой и производительностью, планируем приобретать полную версию, а пока осваиваем бету. В процессе появляется много вопросов, в чём-то получается разобраться самому, иногда помогает Руководство, надеемся на вашу поддержку информацией. Встал следующий вопрос. Есть две кнопки - первая: Включить и Выключить, вторая: Авто и Ручн. Первая кнопка должна быть активна только тогда, когда вторая находится в режиме Ручн. В режиме Авто переменная кнопки Включить и Выключить должна меняться по определённому внешнему алгоритму. Как можно реализовать с помощью скриптов доступность одной кнопки в зависимости от состояния другой?
Название: Re: Работа с кнопками
Отправлено: Fenix от 30 Августа 2016, 07:35:41
При значении тега привязанного к первой кнопке = 1 (например), кнопка2.Visible:=true, иначе :=false. Ну, или использовать свойство Enabled у кнопок.
Название: Re: Работа с кнопками
Отправлено: Simple-Scada от 30 Августа 2016, 09:02:00
Здравствуйте.

Как правильно подсказывает Fenix, для этого достаточно менять свойство Enabled (доступность) или Visible (видимость). Действия должны быть такими:

Например так:
Код
begin
  if btnManAuto.AsInt = 0 then   // если кнопка "Ручной/Авто" в режиме Ручной
    btnOnOff.Enabled := True     // то делаем кнопку "Вкл./Выкл" активной
  else                           // иначе
    btnOnOff.Enabled := False;   // делаем кнопку "Вкл./Выкл" неактивной
end.

В этом примере ноль принимается за ручной режим, все остальные значения за автоматический. Свойство AsInt (и другие подобные) есть у каждого объекта, они подробно описаны здесь (http://simple-scada.com/scripts_manual?section=instruments_common_property).
Название: Re: Работа с кнопками
Отправлено: EvgeniySM от 30 Августа 2016, 09:21:17
Всем спасибо, уже разобрался, использовал button1.Enabled  := false и button1.Enabled  := true (параметр - доступность). Теперь другой вопрос. В автоматическом режиме нужно включать несколько подряд кнопок (как раз тех, что стоят в режиме Авто) с определённым промежутком времени, который можно задать в поле ввода. По сути, это будет присваивание нескольким внешним переменным значения 1000 по порядку с нужным промежутком времени. Началом включения служит нажатие отдельной кнопки, специально для этого предназначенной. Как можно это организовать?
Название: Re: Работа с кнопками
Отправлено: EvgeniySM от 31 Августа 2016, 09:34:36
Второй день бьюсь с этими временными задержками, подскажите, как можно реализовать последовательное включение с заданным промежутком времени?
Название: Re: Работа с кнопками
Отправлено: Simple-Scada от 31 Августа 2016, 10:00:52
EvgeniySM, Вы хотите перенести на скаду функции, которые должны выполняться контроллером. Мы не рекомендуем такие задачи решать при помощи скады, т.к. это должно решаться программой контроллера. Ведь если Вы завершите работу скады (или компьютер на котором запущена скада выйдет из строя), то процесс перестанет нормально функционировать. Т.е. процесс будет зависеть от работы скады и работы компьютера, чего быть не должно. Скада для этого не предназначена. Проект должен зависеть только от контроллера, а скада должна выполнять визуализацию данных, архивацию и т.п.

Если нужно решить задачу на скаде любой ценой, то решение должно быть следующим:

Как правильно реализовать таймер более 1 секунды описано здесь (http://simple-scada.com/forum/index.php?topic=145.msg2142#msg2142).
Название: Re: Работа с кнопками
Отправлено: Yuriy от 02 Ноября 2016, 18:08:51
Добрый день. У меня вопрос следующий. Мне нужно реализовать группу фиксированных кнопок, привязанных к разным переменным, в которой работает только одна кнопка (состояние ВКЛ с подсветкой, значение ее  переменной =1) - остальные автоматически выключаются (состояние ВЫКЛ без подсветки, значение их переменных =0). Каким образом это сделать? Подскажите пожалуйста!
Название: Re: Работа с кнопками
Отправлено: Simple-Scada от 02 Ноября 2016, 18:53:05
Здравствуйте.

Прикрепляем пример проекта с решением задачи. В примере группа из трех кнопок, при необходимости можно добавить недостающее количество и дополнить универсальный скрипт.
Название: Re: Работа с кнопками
Отправлено: Yuriy от 02 Ноября 2016, 20:41:32
Здорово - огромное спасибо! А я ломал голову - как изменить состояние кнопок на "отключено" со сменой ее свойств. Теперь половина задачи решена. А задача такая. Есть 2 группы кнопок и 1 переменная. Если значение переменной =1 - то работает 1 группа кнопок, если 0 - то вторая. Универсальный скрипт что в примере - не совсем правильно работает. Нужно, чтобы всегда в группе была активной одна кнопка. А скрипт работает так, что при повторном нажатии на кнопку - состояние ее переменной сбрасывается в 0 - а меняться не должно. Я так и не понял - почему.
Название: Re: Работа с кнопками
Отправлено: Simple-Scada от 03 Ноября 2016, 10:57:20
Мы просто забыли удалить у кнопок второе состояние. Оно не нужно, т.к. присвоение значений выполняется скриптом. Прикрепляем обновленный проект.