31
Опубликованные / Published / Turkuaz icons
« on: September 28, 2021, 19:45:04 »
[catalog_card=1234]
This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.
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
Screenshot
конкретно в этом примере надо добавить следующую строчку в OnLoadedCode: [Select]FindResource('Skin.PanelColor').Set('Value', ConfigGet('Panel_Color', $FF0000FF));
Ещё раз повторю: в том примере всё сохраняется, он для того и приведён, чтоб можно было использовать эту идею в своих скинах, а не копировать его до буквы, а потом удивляться, почему не работает. Окно Tools в своём проекте будет не нужно, вместо него может быть диалог настроек скина, если меняется много параметров. Если же только один цвет, то:
Если вы не разбираетесь в Паскале, выкладывайте свой проект и просите кого-нибудь, чтоб вам конкретно для него написали скрипты, по-другому не получится, поскольку некоторые выражения в скриптах привязаны к конкретным именам элементов скина.
В том примере и так всё сохраняется в конфиге, не понимаю, что за проблема...
Best practice in this case is use the Resource Repository. You must create a color resource in repository. Next, instead of define the color for panel directly use the resource reference. Now, you not need to change color for each panel - you may change it in repository and all panels will be refreshed automatically.
I have updated your example, please refer to it.
Best practice in this case is use the Resource Repository. You must create a color resource in repository. Next, instead of define the color for panel directly use the resource reference. Now, you not need to change color for each panel - you may change it in repository and all panels will be refreshed automatically.
I have updated your example, please refer to it.
Ещё раз повторю:
Зачем нужно окно Tools? В том проекте оно сделано просто для примера.
Если нужно изменить только цвет панели, то в других окнах должна быть кнопка или контекстное меню для вызова диалога выбора цвета.