AIMP Forum

AIMP for Windows => Skin Editor, Skin Engine => Вопросы / Questions => Тема начата: memo-se от Июня 09, 2020, 01:18:29

Название: Skins, I want to apply color 2
Отправлено: memo-se от Июня 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?
Ниже приведен пример.



Название: Re: Skins, I want to apply color 2
Отправлено: Black_AVP от Июня 09, 2020, 08:37:22
Я выбираю цвет. Когда я включаю и выключаю Aimp Player, цвет остается тем же.
Потому что Вы не сохраняете выбранный цвет в файле конфигурации.
Нет необходимости в скрипте присваивать цвет каждой панели, свойство Color должно ссылаться на ресурс из репозитория.
Название: Re: Skins, I want to apply color 2
Отправлено: svist0plas от Июня 09, 2020, 09:30:48
Here is my solution
Название: Re: Skins, I want to apply color 2
Отправлено: memo-se от Июня 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)
Название: Re: Skins, I want to apply color 2
Отправлено: Black_AVP от Июня 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
Зачем лишний раз проверять конфиг на наличие в нём записи? При первом применении скина и так установится цвет, заданный по умолчанию.
Название: Re: Skins, I want to apply color 2
Отправлено: Black_AVP от Июня 09, 2020, 12:17:54
Вообще в стартовом примере много лишнего: лишние панели, в том числе и панелька выбранного цвета - цвет и так видно, что меняется во всех окнах. Контейнеры тоже могут менять цвет, зачем создавать в нём ещё внутреннюю панель? В оптимизированном виде пример во вложении.
Название: Re: Skins, I want to apply color 2
Отправлено: memo-se от Июня 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
Название: Re: Skins, I want to apply color 2
Отправлено: svist0plas от Июня 09, 2020, 15:37:24
Зачем лишний раз проверять конфиг на наличие в нём записи? При первом применении скина и так установится цвет, заданный по умолчанию.
У меня почему то получилось так, что при первом применении скина он был не синий а серый... Возможно при первом применении нет ещё записи в конфиге "Main_Color" и строчка
   FindObject('Mask_Panel3').Set('Color', ConfigGet('Main_Color', 0))
присваивает цвет = 0, видимо из за этого вся панелька становится серой.  ???
Название: Re: Skins, I want to apply color 2
Отправлено: Black_AVP от Июня 09, 2020, 16:15:29
... Возможно при первом применении нет ещё записи в конфиге "Main_Color" ...
Конфиг-файл создается/переписывается при закрытии плеера, во время сессии всё делается в памяти.
Процедура onLoaded существует прежде всего для установки каких-либо начальных параметров, при необходимости чтения их из конфига, поэтому писать в конфиг из нее нелогично.
Вы добавили ещё одну переменную Main_Color, понадобился и ещё один хендлер, а бывшая переменная Panel_Color вообще осталась неудел. А причина была только в том, что Panel_Color не записывалась в конфиг, поэтому достаточно было добывать одну строчку в существующий хендлер:
ConfigSet('Panel_Color', AColor)
Название: Re: Skins, I want to apply color 2
Отправлено: memo-se от Июня 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')








Название: Re: Skins, I want to apply color 2
Отправлено: memo-se от Июня 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)