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

时间:2013-04-11 01:29:54

标签: delphi delphi-xe3 vcl-styles

Delphi XE3及以下版本的应用程序风格很酷。但我注意到我们可以根据需要标记多种样式,并选择将哪些样式用作默认样式。

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

1 个答案:

答案 0 :(得分:10)

TStyleManager完成了完成此任务所需的工作。使用TStyleManager.StyleNames获取样式列表,使用TStyleManager.TrySetStyle在运行时更改它们。

要了解其工作原理,请启动新的VCL Forms Application。将所需的所有VCL样式添加到项目中,并在表单上放置TComboBox。您需要添加implementation uses子句,如下所示:

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;