Использование «кнопки» из панели инструментов в конструкторе векторных панелей для CAPL - PullRequest
1 голос
/ 14 октября 2019

Я пишу контрольные примеры в CAPL и хочу активировать каждый контрольный пример с помощью «Кнопки» из Panel DesignerПроблема в том, что всякий раз, когда я нажимал кнопку, она реагировала так, как если бы она была нажата дважды.

Я просто добавляю такой код, чтобы сделать эту проблему видимой. (Системная переменная «@sysvar :: Test_Cases :: TC1» связана с кнопкой в ​​редакторе панелей)

on sysvar sysvar::Test_Cases::TC1  
{
    putValueToControl("Window","CAPL Output View",@sysvar::Test_Cases::TC1);
}

Я ожидаю увидеть только -> Value of @sysvar::Test_Cases::TC1 =1

Но вывод выглядит так:

Значение @sysvar :: Test_Cases :: TC1 = 1 Значение @sysvar :: Test_Cases :: TC1 = 0

1 Ответ

1 голос
/ 15 октября 2019

на sysvar X {...} Процедура события реагирует на изменение значения X. Так что в случае нажатия кнопки (0-> 1) значение будет установлено на единицу, а затем при отпускании кнопки (1-> 0) значение будет установлено на ноль, поэтому вы меняете значение X дважды. Вот почему вы получаете триггер дважды.

Чтобы реагировать только один раз на событие нажатия такой кнопки и получать уведомление только один раз, используйте ключевое слово this и оператор условия.

on sysvar sysvar::Test_Cases::TC1  
{
    if (this==1) /* Following block is called only once, on button press 0->1 */
    {
     putValueToControl("Window","CAPL Output View",@sysvar::Test_Cases::TC1);
    }
}
...