Delphi 我们如何在运行时检测和更改样式?

Delphi 我们如何在运行时检测和更改样式?,delphi,delphi-xe3,vcl-styles,Delphi,Delphi Xe3,Vcl Styles,Delphi XE3及其以下版本为我们的应用程序提供了样式,这很酷。但我注意到,我们可以根据需要标记任意多的样式,并让它们选择使用哪种样式作为默认样式 这意味着我们可以随意改变样式,但如何在代码中实现呢?如何让用户选择在我们的软件中使用哪种风格 执行完成此任务所需的操作。用于获取样式列表,并在运行时对其进行更改 要了解其工作原理,请启动一个新的VCL表单应用程序。将所有需要的VCL样式添加到项目中,并在表单上放置一个TComboBox。您需要添加实现使用子句,如下所示: uses Vcl.T

Delphi XE3及其以下版本为我们的应用程序提供了样式,这很酷。但我注意到,我们可以根据需要标记任意多的样式,并让它们选择使用哪种样式作为默认样式

这意味着我们可以随意改变样式,但如何在代码中实现呢?如何让用户选择在我们的软件中使用哪种风格

执行完成此任务所需的操作。用于获取样式列表,并在运行时对其进行更改

要了解其工作原理,请启动一个新的
VCL表单应用程序
。将所有需要的VCL样式添加到项目中,并在表单上放置一个
TComboBox
。您需要添加
实现
使用
子句,如下所示:

uses
  Vcl.Themes;

procedure TForm1.ComboBox1Change(Sender: TObject);
begin
  TStyleManager.TrySetStyle(ComboBox1.Items[ComboBox1.ItemIndex]);
end;

procedure TForm1.FormShow(Sender: TObject);
var
  s: String;
begin
  ComboBox1.Items.BeginUpdate;
  try
    ComboBox1.Items.Clear;
    for s in TStyleManager.StyleNames do
       ComboBox1.Items.Add(s);
    ComboBox1.Sorted := True;
    // Select the style that's currently in use in the combobox
    ComboBox1.ItemIndex := ComboBox1.Items.IndexOf(TStyleManager.ActiveStyle.Name);
  finally
    ComboBox1.Items.EndUpdate;
  end;
end;

你怎么知道这么多?我阅读了VCL源代码、可用的文档、大量StackOverflow帖子(即使是我对此一无所知的帖子,看起来也很有趣),并编写了大量代码,试图找出不同的东西。:-)@我们常常不知道答案,只是通过网络搜索来找到答案。“我就是这样找到这个问题的对象的。”戴维谢弗南。使用
TStyleManager.TrySetStyle(ComboBox1.Items[ComboBox1.ItemIndex])后模态窗口是否变为非模态?DX10。