我有两本加载了自定义样式的样式书,希望它们一次应用于所有表单(在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;