2013-04-11 72 views
1

德尔福XE3及以下版本适用于我们的应用程序很酷。但我注意到,我们可以标记尽可能多的样式,并且他们选择将哪些样式用作默认样式。我们如何在运行时检测和更改样式?

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

回答

9

TStyleManager做你需要完成这项任务。使用TStyleManager.StyleNames获取样式列表,并使用TStyleManager.TrySetStyle在运行时更改它们。

要了解其工作原理,请开始新的VCL Forms Application。将所需的所有VCL样式添加到项目中,然后在窗体上放置一个TComboBox。您需要添加implementationuses子句,如下所示:

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; 
+1

您怎么知道这么多? – PSyLoCKe 2013-04-11 02:07:58

+8

我读了VCL的源代码,可用的文档,大量的StackOverflow文章(甚至对这些文章一无所知的文章都只是看起来很有趣),并且写了大量的代码来试图找出不同的东西。 :-) – 2013-04-11 02:14:08

+0

@EASI很多时候我们不知道答案,只是做一个网络搜索找出答案。这就是我找到这个问题的方式。 – 2013-04-11 13:29:51

相关问题