2

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

在此处输入图像描述

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;

但不幸的是,在运行时,组合框仅包含一项:默认的 Windows 样式:

在此处输入图像描述

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

4

1 回答 1

1

WhileTStyleManager是一个类Vcl.Themes(包含在单元的uses子句中),并且问题中的代码示例不会产生任何编译器错误,TStyleManager.StyleNames也不会给出正确的结果:它不会返回在“项目选项”对话框中激活的其他 VCL 样式.

为了使TStyleManager.StyleNames实际工作,BOTHVcl.ThemesVcl.Styles必须包含在usesPROJECT FILE (.DPR) 的子句中。(我不确定文档中的某处是否提到了这一点)。

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

于 2016-06-28T15:06:13.317 回答