无法获取所选的VCL主题样式

时间:2016-06-27 20:26:37

标签: delphi vcl-styles delphi-10.1-berlin

在Delphi 10.1 Berlin VCL应用程序的外观页面的项目选项中,我添加了两种样式到默认的 Windows 样式:

enter image description here

FormShow事件处理程序中,我有以下代码:

procedure TForm1.FormShow(Sender: TObject);
var
  s: string;
begin
  // Show all available in application styles:
  ComboBox1.Items.BeginUpdate;
  try
    ComboBox1.Items.Clear;
    for s in TStyleManager.StyleNames do
      ComboBox1.Items.Add(s);
    ComboBox1.Sorted := True;
    ComboBox1.ItemIndex := ComboBox1.Items.IndexOf(TStyleManager.ActiveStyle.Name);
  finally
    ComboBox1.Items.EndUpdate;
  end;
end;

但遗憾的是,在运行时,组合框仅包含 ONE 项:默认的Windows样式:

enter image description here

那么如何在项目选项中检查所有样式?

1 个答案:

答案 0 :(得分:0)

虽然TStyleManagerVcl.Themes中的一个类(包含在单元' s uses子句中),但问题中的代码示例不会产生任何编译器错误, TStyleManager.StyleNames未提供正确的结果:它不会返回在“项目选项”对话框中激活的其他VCL样式。

要使TStyleManager.StyleNames真正起作用,Vcl.ThemesVcl.Styles必须包含在PROJECT FILE(.DPR)的uses子句中。 (我不确定这是否在文档中的某处提到过。)

我的测试证实了这一点。感谢@Uwe Raabe的建议!