AIMP Forum

AIMP for Windows => Вопросы / Questions => Topic started by: Mr.HiD on November 05, 2018, 18:03:44

Title: Вопрос о скрипте
Post 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;



Title: Re: Вопрос о скрипте
Post by: Artem on November 05, 2018, 20:34:55
Информации недостаточно.
Title: Re: Вопрос о скрипте
Post by: Zhenya on November 05, 2018, 22:19:04
Потому что нужно в редакторе заполнить свойство Hint у кнопки нужным значением (в вашем случае, я думаю, это "@Lng:16;" (без кавычек)) и потом собирать скин. Перед нажатием кнопки (и срабатыванием скрипта) у вас то свойство ещё пустое.

Quote from: Цитата из справки
Примечания:
1. Значение по умолчанию в скрипте и в редакторе должно быть одно и то же, иначе интерфейс будет сбоить при изменении значения счетчика.
Title: Re: Вопрос о скрипте
Post by: Mr.HiD on November 11, 2018, 13:56:23
Потому что нужно в редакторе заполнить свойство Hint у кнопки нужным значением (в вашем случае, я думаю, это "@Lng:16;" (без кавычек)) и потом собирать скин. Перед нажатием кнопки (и срабатыванием скрипта) у вас то свойство ещё пустое.


Спасибо! Даже не думал, что ответ окажется таким простым. Теперь буду знать.  :)
Title: Re: Вопрос о скрипте
Post by: Black_AVP on November 11, 2018, 14:12:32
Всю Вашу конструкцию можно значительно упростить:

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;
Title: Re: Вопрос о скрипте
Post by: gr-e on November 11, 2018, 14:45:04
А можно использовать провайдер StringConcatenator с выражением "%IFEqual(%Value1,0,@Lng:16;,@Lng:17;)".
Тогда и проблем с инициализацией не будет.
Title: Re: Вопрос о скрипте
Post by: Mr.HiD on November 11, 2018, 17:08:36
Всю Вашу конструкцию можно значительно упростить:

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, спасибо. Испытаем Ваш вариант. Я только начинаю изучать скрипты и это будет крайне полезным. ;)
Title: Re: Вопрос о скрипте
Post by: Black_AVP on November 11, 2018, 17:11:54
Полистайте тему https://www.aimp.ru/forum/index.php?topic=27831.0 - там уже не мало примеров скриптов.
Title: Re: Вопрос о скрипте
Post by: Mr.HiD on November 11, 2018, 17:15:51
Всем спасибо, благодарю. Вопрос закрыт.  :D