2012-03-28 98 views
12

有沒有一個很好的VCL樣式教程,我們可以看到如何動態地(在運行時)加載/更改樣式?Delphi VCL樣式教程 - 如何在運行時更改樣式

由於XE2是VCL樣式的第一個版本,因此這應該與Delphi XE2一起使用。

+0

有很多在http://www.tindex.net/VCL/VCLStyles.html相關鏈接 – LachlanG 2013-06-20 05:06:38

+0

與模態窗口小心地VCL風格。仍然在DX10中的錯誤 - http://stackoverflow.com/questions/33606625/delphi-xe7-dx10-using-tstylemanager-trysetstyle-in-runtime-when-modal-window-d – Zam 2016-08-08 08:38:51

回答

24

我加入一個答案,因爲當地的信息往往是首選,只是鏈接。

下面是你需要知道的重要事實,然後再開始:

  1. 許多VCL控件有顏色的特性,但這些特性都將被忽略時,風格上,並且默認「共同控制」像Button將會被Delphi自己繪製,而不是使用「隨窗口」附帶的XP或Windows 2000風格。

  2. 不知何故,在你的應用程序的深處,VCL的風格把掛鉤畫在你的控件上。它可以處理的所有東西都將使用常規控件上的「外觀」進行繪製。許多人稱之爲「剝皮vcl」,在VCL樣式之前,您可能已經找到了第三方皮膚系統。現在它的內置。

  3. 任何不掛鉤,仍然會得到正常的風格。所以大多數第三方控件,以及VCL的一些部分不會是主題。不要期望完美的即時結果。此外,您可能有時會看到由於蒙皮造成的瞬間閃爍或毛刺,這是可以預料的。在運行時添加樣式加載,並且結果的最終質量是任何人的猜測。您不一定能保證在運行時加載的樣式將包含您可能希望包含的所有樣式。你也不能保證在你的應用中靜態包含一個,但至少靜態包含的可以由你的QA團隊(可能是你)來驗證。

這裏是最簡單的入門步驟:真的只有第2步到第4步是必不可少的。

  1. 單擊文件 - >新建 - > VCL Forms項目。

  2. 右鍵單擊項目管理器窗格中的項目選項,然後單擊屬性。導航到應用程序 - >外觀

  3. 單擊自定義樣式將其打開。 (Amakrits是我列表中的第一個,所以我會點擊它)。

  4. 單擊默認樣式組合框並將其更改爲默認值以外的值。

  5. 把東西放在你的窗體上,所以它不是空的。 (一個按鈕,一個列表框等)。

  6. 運行您的應用程序。

enter image description here

現在,先進的東西:在運行時改變你的風格:

我用這個按鈕,點擊FORMCREATE做到這一點:

添加fdefaultStyleName:String;到的私人部分你的形式。

確保Vcl.Themes在您的使用條款。

procedure TForm1.Button1Click(Sender: TObject); 
begin 
if Assigned(TStyleManager.ActiveStyle) and (TStyleManager.ActiveStyle.Name<>'Windows') then begin 
    TStyleManager.TrySetStyle('Windows'); 
end else begin 
    TStyleManager.TrySetStyle(fdefaultStyleName); // whatever was in the project settings. 
end; 

end; 

procedure TForm1.FormCreate(Sender: TObject); 
begin 
if Assigned(TStyleManager.ActiveStyle) then 
    fdefaultStyleName := TStyleManager.ActiveStyle.Name; 

end; 
2

一個例子(公開程序)。請記住使用Vcl.Themes;

procedure TData.AllowSKIN(bSKIN:boolean); 
var 
    sSKIN:string; 
begin 
    sSKIN := 'Aqua Light Slate'; 
    if not bSKIN then sSKIN := 'Windows'; 
    TStyleManager.TrySetStyle(sSKIN); 
end;