AIMP Forum
AIMP for Windows => Вопросы / Questions => Topic started by: Mr.HiD on November 05, 2018, 18:03:44
-
Почему скрипт работает только поле нажатия на кнопку? После первого нажатия.
procedure Execute(var State: Integer);
var
BT: TComponent;
begin
BT := FindObject('ButtonSpr');
case State of
0:
begin
BT.BeginUpdate;
BT.Set('Hint', '@Lng:16;');
BT.EndUpdate;
end;
1:
begin
BT.BeginUpdate;
BT.Set('Hint', '@Lng:17;');
BT.EndUpdate;
end;
end;
end;
-
Информации недостаточно.
-
Потому что нужно в редакторе заполнить свойство Hint у кнопки нужным значением (в вашем случае, я думаю, это "@Lng:16;" (без кавычек)) и потом собирать скин. Перед нажатием кнопки (и срабатыванием скрипта) у вас то свойство ещё пустое.
Примечания:
1. Значение по умолчанию в скрипте и в редакторе должно быть одно и то же, иначе интерфейс будет сбоить при изменении значения счетчика.
-
Потому что нужно в редакторе заполнить свойство Hint у кнопки нужным значением (в вашем случае, я думаю, это "@Lng:16;" (без кавычек)) и потом собирать скин. Перед нажатием кнопки (и срабатыванием скрипта) у вас то свойство ещё пустое.
Спасибо! Даже не думал, что ответ окажется таким простым. Теперь буду знать. :)
-
Всю Вашу конструкцию можно значительно упростить:
procedure Execute(var State: Integer);
var
S: String;
begin
if State = 0 then S:= '@Lng:16;' else S:= '@Lng:17;';
FindObject('ButtonSpr').Set('Hint', S)
end;
-
А можно использовать провайдер StringConcatenator с выражением "%IFEqual(%Value1,0,@Lng:16;,@Lng:17;)".
Тогда и проблем с инициализацией не будет.
-
Всю Вашу конструкцию можно значительно упростить:
procedure Execute(var State: Integer);
var
S: String;
begin
if State = 0 then S:= '@Lng:16;' else S:= '@Lng:17;';
FindObject('ButtonSpr').Set('Hint', S)
end;
Black_AVP, спасибо. Испытаем Ваш вариант. Я только начинаю изучать скрипты и это будет крайне полезным. ;)
-
Полистайте тему https://www.aimp.ru/forum/index.php?topic=27831.0 - там уже не мало примеров скриптов.
-
Всем спасибо, благодарю. Вопрос закрыт. :D