在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;
但遗憾的是,在运行时,组合框仅包含 ONE 项:默认的Windows样式:
那么如何在项目选项中检查所有样式?
答案 0 :(得分:0)
虽然TStyleManager
是Vcl.Themes
中的一个类(包含在单元' s uses
子句中),但问题中的代码示例不会产生任何编译器错误, TStyleManager.StyleNames
未提供正确的结果:它不会返回在“项目选项”对话框中激活的其他VCL样式。
要使TStyleManager.StyleNames
真正起作用,Vcl.Themes
和Vcl.Styles
必须包含在PROJECT FILE(.DPR)的uses
子句中。 (我不确定这是否在文档中的某处提到过。)
我的测试证实了这一点。感谢@Uwe Raabe的建议!