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

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

Автор Тема: Скрипт кнопка с фиксацией  (Прочитано 2036 раз)

vasiabel08

  • Новичок
  • *
  • Сообщений: 10
    • Просмотр профиля
Скрипт кнопка с фиксацией
« : 14 Июня 2024, 05:23:55 »
Добрый день в проекте реализованы кнопки без фиксации для управления переключением оборудования, в web клиенте на смартфонах эти кнопки не работают, если делать кнопку с фиксацией то постоянно требуется 2 раза на нее нажать. Как скриптом реализовать сброс кнопки в исходное состояние через 5 секунд.

pan2000

  • Постоялец
  • ***
  • Сообщений: 210
    • Просмотр профиля
Re: Скрипт кнопка с фиксацией
« Ответ #1 : 14 Июня 2024, 07:56:05 »
   Здравствуйте.

 Вполне можно обойтись без таймера, достаточно в скрипте по изменению основной переменной переводить кнопку с фиксацией в начальное состояние:
Код: (delphi)
begin
  with Sender as TM_Button do
    if AsInt > 0 then                     //  для boolean: if AsBool then
      begin
        Value := 0;                       //  для boolean:  Value := false; 
// действие при нажатии кнопки, например счетчик числа нажатий на самой кнопке
        Tag := Tag + 1;
        States[0].Caption := IntToStr(Tag);
      end;
end.


Для кнопки с таймером реализация немножко сложнее. Набор скриптов для "самодостаточной" кнопки (т.е. не требующей изменения скриптов или добавления новых переменных):
- по изменению основной переменной:
Код: (delphi)
begin
  with Sender as TM_Object do
    if AsInt > 0 then Tag := 5;  // Tag - это таймерная переменная данной кнопки
// действие при нажатии кнопки
end.

- "Прошла секунда":
Код: (delphi)
begin
  timer.Inc(1, 0, 10000000);            // это единственная виртуальная переменная - таймера хватит на 7 лет
end.
- по изменению дополнительной переменной, в качестве которой выступает виртуальная переменная timer:
Код: (delphi)
begin
  with Sender as TM_Button do
    if Tag > 0 then
    begin
      if Tag = 1 then Value := 0; // обнуление основной переменной - сброс кнопки в начальное состояние
      Tag := Tag - 1;
// иллюстрация - изменение значения таймерной переменной
      States[1].Caption := IntToStr(Tag);   
    end;
end.
       

Для кнопок с изменяемым таймером можно использовать шаблон. Принудительное переключение кнопки в начальное состояние можно заблокировать, управляя свойством Enabled кнопки.
Все примеры во вложении.         
« Изменён: 14 Июня 2024, 11:38:44 от pan2000 »