AIMP Forum

AIMP для Windows => Skin Editor / Skin Engine => Ошибки / Замечания => Topic started by: D2NP on April 15, 2019, 18:46:08

Title: [+] [1062] [2124] Скрипт выполняется два раза
Post by: D2NP on April 15, 2019, 18:46:08
Есть скрипт, выполнение скрипта связано с Visible окна:
Script.Handler <-> NewForm.Visible

При открытии или скрытии окна скрипт выполняется два раза. Так и должно быть?

Если выполнение повесить на Visibility контейнера, то скрипт выполняется как и ожидалось один раз:
Script.Handler <-> Container.Visibility

пример прикрепил
Title: Re: [1062] [2124] Скрипт выполняется два раза
Post by: Black_AVP on April 15, 2019, 20:33:02
Похоже, это особенность именно хендлеров, если вместо них использовать скрипт. счётчики, то всё нормально. Возможно, хендлеры на подобний биндинг не рассчитаны..

Меня другое смутило: как скрипт-движок позволяет такие вольности:

FindObject('TextDisplayEx1').Set('Template', FindObject('TextDisplayEx1').Get('Template')+1);

к строке прибавляется число!
Title: Re: [1062] [2124] Скрипт выполняется два раза
Post by: D2NP on April 16, 2019, 06:53:56
к строке прибавляется число!
Кажется автоматически преобразует Variant -> Double, во всяком случае, если в Template строковое значение, то скрипт выдаст: Could not convert variant of type (UnicodeString) into type (Double)
Title: Re: [1062] [2124] Скрипт выполняется два раза
Post by: Artem on April 16, 2019, 07:44:38
Есть скрипт, выполнение скрипта связано с Visible окна:
Script.Handler <-> NewForm.Visible

При открытии или скрытии окна скрипт выполняется два раза. Так и должно быть?

Если выполнение повесить на Visibility контейнера, то скрипт выполняется как и ожидалось один раз:
Script.Handler <-> Container.Visibility

пример прикрепил

Да, это нормально. Скрипт срабатывает каждый раз, когда вызывается обновление связи. Не зависимо от того, поменялось ли реально значение или нет.
Счетчик работает потому, что он на своей стороне делает проверку на изменение значения.