AIMP Forum

AIMP for Windows => Skin Editor, Skin Engine => Вопросы / Questions => Topic started by: memo-se on June 09, 2020, 01:18:29

Title: Skins, I want to apply color 2
Post by: memo-se on June 09, 2020, 01:18:29
Skins, I want to apply color 2

I can't save the color on the skin
Please, can you help me?
 :-\
 ???
I choose the color, when I turn Aimp Player on and off, the color is the same.
Я выбираю цвет. Когда я включаю и выключаю Aimp Player, цвет остается тем же.

(OnLoaded)
FindResource('Skin.PanelColor').Set('Value', ConfigGet('Panel_Color', $FF0000FF));

Please, can you help me?
 :-[
Below is an example, will you?
Ниже приведен пример.



Title: Re: Skins, I want to apply color 2
Post by: Black_AVP on June 09, 2020, 08:37:22
Я выбираю цвет. Когда я включаю и выключаю Aimp Player, цвет остается тем же.
Потому что Вы не сохраняете выбранный цвет в файле конфигурации.
Нет необходимости в скрипте присваивать цвет каждой панели, свойство Color должно ссылаться на ресурс из репозитория.
Title: Re: Skins, I want to apply color 2
Post by: svist0plas on June 09, 2020, 09:30:48
Here is my solution
Title: Re: Skins, I want to apply color 2
Post by: memo-se on June 09, 2020, 09:58:17
Here is my solution


 :) ;) :D ;D 8)
Okay, done.
Thank you for your help,
Health to your hand,
It was perfect.

Thank you all for your help.
(https://uhesse.files.wordpress.com/2016/12/fireworks-animation.gif)
Title: Re: Skins, I want to apply color 2
Post by: Black_AVP on June 09, 2020, 10:16:10
procedure Execute(Sender, Arguments: TComponent);
var
  AColor: Int64;
 
begin
  with FindObject('ColorPicker_Panel') do
    AColor:= HSLToColor(Arguments.Get('X') / (Get('PlaceInfo.ActualWidth') - 1), 1,
       1 - Arguments.Get('Y') / (Get('PlaceInfo.Actualheight') - 1));

{ Следующие закомментированные строки лишние:

  FindObject('Mask_Panel').Set('Color', AColor);           
  FindObject('Mask_Panel1').Set('Color', AColor);
  FindObject('Mask_Panel2').Set('Color', AColor);
  FindObject('Mask_Panel3').Set('Color', AColor);
  FindObject('Mask_Panel4').Set('Color', AColor);
  FindObject('Mask_Panel5').Set('Color', AColor);
  FindObject('Mask_Panel6').Set('Color', AColor);
  FindObject('Mask_Panel7').Set('Color', AColor);
  FindObject('Mask_Panel8').Set('Color', AColor);
  FindObject('Mask_Panel9').Set('Color', AColor);
  FindObject('Mask_Panel10').Set('Color', AColor);
  FindObject('Mask_Panel11').Set('Color', AColor);
  FindObject('Mask_Panel12').Set('Color', AColor);
  FindObject('Mask_Panel13').Set('Color', AColor);
  FindObject('Mask_Panel14').Set('Color', AColor);
  FindObject('Mask_Panel15').Set('Color', AColor);
  FindObject('Mask_Panel16').Set('Color', AColor);
  FindObject('Mask_Panel17').Set('Color', AColor);
  FindObject('Mask_Panel18').Set('Color', AColor);
  FindObject('Mask_Panel19').Set('Color', AColor);
  FindObject('Mask_Panel20').Set('Color', AColor);
}
  FindObject('Hex_Display').Set('Template', Copy(ColorToString(AColor), 3, 6))
end;


Here is my solution
Зачем лишний раз проверять конфиг на наличие в нём записи? При первом применении скина и так установится цвет, заданный по умолчанию.
Title: Re: Skins, I want to apply color 2
Post by: Black_AVP on June 09, 2020, 12:17:54
Вообще в стартовом примере много лишнего: лишние панели, в том числе и панелька выбранного цвета - цвет и так видно, что меняется во всех окнах. Контейнеры тоже могут менять цвет, зачем создавать в нём ещё внутреннюю панель? В оптимизированном виде пример во вложении.
Title: Re: Skins, I want to apply color 2
Post by: memo-se on June 09, 2020, 14:04:39
procedure Execute(Sender, Arguments: TComponent);
var
  AColor: Int64;
 
begin
  with FindObject('ColorPicker_Panel') do
    AColor:= HSLToColor(Arguments.Get('X') / (Get('PlaceInfo.ActualWidth') - 1), 1,
       1 - Arguments.Get('Y') / (Get('PlaceInfo.Actualheight') - 1));

{ Следующие закомментированные строки лишние:

  FindObject('Mask_Panel').Set('Color', AColor);           
  FindObject('Mask_Panel1').Set('Color', AColor);
  FindObject('Mask_Panel2').Set('Color', AColor);
  FindObject('Mask_Panel3').Set('Color', AColor);
  FindObject('Mask_Panel4').Set('Color', AColor);
  FindObject('Mask_Panel5').Set('Color', AColor);
  FindObject('Mask_Panel6').Set('Color', AColor);
  FindObject('Mask_Panel7').Set('Color', AColor);
  FindObject('Mask_Panel8').Set('Color', AColor);
  FindObject('Mask_Panel9').Set('Color', AColor);
  FindObject('Mask_Panel10').Set('Color', AColor);
  FindObject('Mask_Panel11').Set('Color', AColor);
  FindObject('Mask_Panel12').Set('Color', AColor);
  FindObject('Mask_Panel13').Set('Color', AColor);
  FindObject('Mask_Panel14').Set('Color', AColor);
  FindObject('Mask_Panel15').Set('Color', AColor);
  FindObject('Mask_Panel16').Set('Color', AColor);
  FindObject('Mask_Panel17').Set('Color', AColor);
  FindObject('Mask_Panel18').Set('Color', AColor);
  FindObject('Mask_Panel19').Set('Color', AColor);
  FindObject('Mask_Panel20').Set('Color', AColor);
}
  FindObject('Hex_Display').Set('Template', Copy(ColorToString(AColor), 3, 6))
end;

Зачем лишний раз проверять конфиг на наличие в нём записи? При первом применении скина и так установится цвет, заданный по умолчанию.


Мне приходилось показывать эти панели по необходимости, обычно они не видят эти панели.
I had to show these panels by necessity, normally they don't see these panels.

Хорошего здоровья, спасибо за ваш интерес.
Good health, thank you, for your interest.
Thank you very much for your interest.

 :) :D ;D
Title: Re: Skins, I want to apply color 2
Post by: svist0plas on June 09, 2020, 15:37:24
Зачем лишний раз проверять конфиг на наличие в нём записи? При первом применении скина и так установится цвет, заданный по умолчанию.
У меня почему то получилось так, что при первом применении скина он был не синий а серый... Возможно при первом применении нет ещё записи в конфиге "Main_Color" и строчка
   FindObject('Mask_Panel3').Set('Color', ConfigGet('Main_Color', 0))
присваивает цвет = 0, видимо из за этого вся панелька становится серой.  ???
Title: Re: Skins, I want to apply color 2
Post by: Black_AVP on June 09, 2020, 16:15:29
... Возможно при первом применении нет ещё записи в конфиге "Main_Color" ...
Конфиг-файл создается/переписывается при закрытии плеера, во время сессии всё делается в памяти.
Процедура onLoaded существует прежде всего для установки каких-либо начальных параметров, при необходимости чтения их из конфига, поэтому писать в конфиг из нее нелогично.
Вы добавили ещё одну переменную Main_Color, понадобился и ещё один хендлер, а бывшая переменная Panel_Color вообще осталась неудел. А причина была только в том, что Panel_Color не записывалась в конфиг, поэтому достаточно было добывать одну строчку в существующий хендлер:
ConfigSet('Panel_Color', AColor)
Title: Re: Skins, I want to apply color 2
Post by: memo-se on June 09, 2020, 20:10:20

En
Mr. Black_AVP, I didn't understand what you meant at first but now I understand, Thanks
Ru
Mr. Black_AVP, сначала я не поняла, что вы имели в виду, но теперь я понимаю, спасибо

 :-[  :o :) ;) :D ;D
En
('Mask_Panel') not so important
The important thing ('Skin.PanelColor')
Ru
('Mask_Panel') не так важно
Важная вещь ('Skin.PanelColor')








Title: Re: Skins, I want to apply color 2
Post by: memo-se on June 09, 2020, 20:24:38
En
I adapted this color work to this Skin, Those who are curious can look.
Ru
Я адаптировал эту цветную работу к этой коже. Те, кому интересно, могут посмотреть.

 :-[ :) ;) :D ;D

https://www.deviantart.com/memo-se/art/Windows-8-Colors-Skin-For-Aimp-Player-489209927 (https://www.deviantart.com/memo-se/art/Windows-8-Colors-Skin-For-Aimp-Player-489209927)


Thank you all for your help.
(https://uhesse.files.wordpress.com/2016/12/fireworks-animation.gif)