1
德爾福XE3及以下版本適用於我們的應用程序很酷。但我注意到,我們可以標記儘可能多的樣式,並且他們選擇將哪些樣式用作默認樣式。我們如何在運行時檢測和更改樣式?
這意味着我們可以隨意更改樣式,但是如何在代碼中執行它?以及如何讓用戶選擇在我們的軟件中使用哪種風格?
德爾福XE3及以下版本適用於我們的應用程序很酷。但我注意到,我們可以標記儘可能多的樣式,並且他們選擇將哪些樣式用作默認樣式。我們如何在運行時檢測和更改樣式?
這意味着我們可以隨意更改樣式,但是如何在代碼中執行它?以及如何讓用戶選擇在我們的軟件中使用哪種風格?
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;
您怎麼知道這麼多? – PSyLoCKe 2013-04-11 02:07:58
我讀了VCL的源代碼,可用的文檔,大量的StackOverflow文章(甚至對這些文章一無所知的文章都只是看起來很有趣),並且寫了大量的代碼來試圖找出不同的東西。 :-) – 2013-04-11 02:14:08
@EASI很多時候我們不知道答案,只是做一個網絡搜索找出答案。這就是我找到這個問題的方式。 – 2013-04-11 13:29:51