Delphi FireMonkey:如何更改样式本';所有窗体运行时上的样式?

Delphi FireMonkey:如何更改样式本';所有窗体运行时上的样式?,delphi,styles,firemonkey,Delphi,Styles,Firemonkey,我有两个加载了自定义样式的样式本,希望它们能同时应用于所有表单(在windows上测试,东京10.2.3) 如果我设置UseStyleManager=true,则此代码不起作用。如果UseStyleManager=false,则它只对一个表单有效。您可以使用Application.Components[]访问每个表单并设置其样式本属性。对于这两个样式本,保留UseStyleManager=False 在主窗体中添加: type TForm14 = class(TForm) ...

我有两个加载了自定义样式的样式本,希望它们能同时应用于所有表单(在windows上测试,东京10.2.3)


如果我设置
UseStyleManager=true
,则此代码不起作用。如果
UseStyleManager=false
,则它只对一个表单有效。

您可以使用
Application.Components[]
访问每个表单并设置其
样式本
属性。对于这两个样式本,保留
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;
procedure TForm14.Button1Click(Sender: TObject);
begin
  ChangeApplicationStyle(StyleBook1);
end;

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