FireMonkey:如何在所有表单运行时更改 styleBook 的样式?



我有两本加载了自定义样式的样式书,希望它们一次应用于所有表单(在windows上测试,Tokyo 10.2.3(。

procedure TForm6.Button1Click(Sender: TObject);
begin
StyleBook := StyleBook2;
end;
procedure TForm6.Button2Click(Sender: TObject);
begin
StyleBook := StyleBook1;
end;

如果我设置UseStyleManager=true,则此代码不起作用。如果是UseStyleManager=false,它可以工作,但仅适用于1种形式。

您可以使用Application.Components[]访问每个表单并设置其StyleBook属性。为两个样式书保留UseStyleManager = False

添加到主表单:

type
TForm14 = class(TForm)
...
private
procedure ChangeApplicationStyle(sb: TStyleBook);

并实现:

procedure TForm14.ChangeApplicationStyle(sb: TStyleBook);
var
i: integer;
begin
for i := 0 to Application.ComponentCount - 1 do
if Application.Components[i] is TForm then
TForm(Application.Components[i]).StyleBook := sb;
end;

最后更改,例如:

procedure TForm14.Button1Click(Sender: TObject);
begin
ChangeApplicationStyle(StyleBook1);
end;
procedure TForm14.Button2Click(Sender: TObject);
begin
ChangeApplicationStyle(StyleBook2);
end;

相关内容

  • 没有找到相关文章

最新更新