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

时间:2018-11-18 23:59:05

标签: delphi styles firemonkey

我有2本加载了自定义样式的StyleBook,并且希望将它们一次应用于所有表单(在Windows上进行测试,东京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 个答案:

答案 0 :(得分:2)

您可以使用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;