0 Members and 12 Guests are viewing this topic.
Заставили, таки, старика залезть в редактор. Всё намного проще (см. влож.)
Я не стал так делать потому что не был уверен можно ли менять позицию скрипткаунтера из самого себя
Спасибо подключившимся к моей проблеме! Круто, но это еще не всё тут нужна зависимость от выбранной темы (в ручную и автоматом) во время прослушивания трека соответственно событие
Тут ещё дело осложняется тем, что пользователь может выбрать в настройках плеера свою тему или "Автоматически", тогда все эти плюшки пойдут коту под хвост.Всё это будет работать только при дефолтной цветовой схеме в плеере.
procedure SetupResource(const AName, ASuffix: string);var Res: TComponent;begin Res := FindResource(AName); if Res <> nil then Res.Set('ID', AName + '_' + ASuffix);end;{ Переключение цветов } procedure SetupTheme(const ASuffix: string);begin SetupResource('AlbumArt.Colors.Back', ASuffix); SetupResource('AlbumArt.Colors.Front', ASuffix); end; procedure Execute(Sender, Arguments: TComponent);var H, S, L: Single; State: Integer; Res, Theme_Trigger: TComponent; TriggerValue: Integer;begin BeginUpdateResources; try Res := FindResource('AlbumArt.Colors.Background'); Theme_Trigger := FindObject('Theme_Trigger'); if (Res <> nil) and (Theme_Trigger <> nil) then begin ColorToHSL(Res.Get('Value'), H, S, L); TriggerValue := Theme_Trigger.Get('Position'); //тема if (L >= 0.0) and (L <= 0.2) and (TriggerValue = 1) then begin State := 0; // Темная обложка + счетчик в режиме темной темы end else if (L >= 0.8) and (L <= 1.0) and (TriggerValue > 1) then begin State := 1; // Светлая обложка + счетчик в режиме светлой темы end else begin State := 2; // Средняя обложка или несоответствие счетчику end; if (State = 0) or (State = 2) then SetupTheme('0') else SetupTheme('1'); end; finally EndUpdateResources; end;end;
Read more...Code: [Select]procedure SetupResource(const AName, ASuffix: string);var Res: TComponent;begin Res := FindResource(AName); if Res <> nil then Res.Set('ID', AName + '_' + ASuffix);end;{ Переключение цветов } procedure SetupTheme(const ASuffix: string);begin SetupResource('AlbumArt.Colors.Back', ASuffix); SetupResource('AlbumArt.Colors.Front', ASuffix); end; procedure Execute(Sender, Arguments: TComponent);var H, S, L: Single; State: Integer; Res, Theme_Trigger: TComponent; TriggerValue: Integer;begin BeginUpdateResources; try Res := FindResource('AlbumArt.Colors.Background'); Theme_Trigger := FindObject('Theme_Trigger'); if (Res <> nil) and (Theme_Trigger <> nil) then begin ColorToHSL(Res.Get('Value'), H, S, L); TriggerValue := Theme_Trigger.Get('Position'); //тема if (L >= 0.0) and (L <= 0.2) and (TriggerValue = 1) then begin State := 0; // Темная обложка + счетчик в режиме темной темы end else if (L >= 0.8) and (L <= 1.0) and (TriggerValue > 1) then begin State := 1; // Светлая обложка + счетчик в режиме светлой темы end else begin State := 2; // Средняя обложка или несоответствие счетчику end; if (State = 0) or (State = 2) then SetupTheme('0') else SetupTheme('1'); end; finally EndUpdateResources; end;end;
if (L <= 0.2) and (TriggerValue = 1) then State := 0 // Темная обложка + счетчик в режиме темной темы else if (L >= 0.8) and (TriggerValue > 1) then State := 1 // Светлая обложка + счетчик в режиме светлой темы else State := 2; // Средняя обложка или несоответствие счетчику
Цвет акцента приложения не применяется к цветам, посчитанным на основе обложке альбома, но может применяться к значениям по умолчанию - это поведение регулируется свойством AllowColoration