FireMonkey: Как изменить стиль styleBook во всех формах выполнения? - PullRequest
0 голосов
/ 19 ноября 2018

У меня есть 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 формы.

1 Ответ

0 голосов
/ 19 ноября 2018

Вы можете использовать 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;
...