2011-05-16 53 views
2

我在C++ Builder 2010中有一個應用程序,它具有啓用了視覺樣式/運行時主題以使用按鈕和選項卡的運行時查找。但是,如果可能的話,我有一組複選框(TCheckBox),我想重寫運行時風格。啓用視覺樣式時,是否可以覆蓋控件的顏色?

我的複選框用於爲各種顏色切換一些圖形疊加。當我禁用了運行時主題時,我可以設置複選框的背景以顯示它將啓用的顏色,如下所示: checkboxes with a custom background color

有沒有一種方法可以在運行時主題啓用時實現同樣的效果?

感謝stukelly,我可以有選擇地禁用各個控件的視覺風格,但我似乎無法我打電話SetWindowTheme如下後修改控件的顏色或其他造型:

SetWindowTheme(CheckBox1->Handle, L" ", ""); 

回答

1

把它放在自己的面板上每個複選框,將其設置爲你想要的顏色。

+0

這麼多面板有點麻煩,但它似乎工作,所以我會把它標記爲現在的答案。 – Troyen 2011-05-25 22:40:05

+1

啓用主題後,很多控件都會獲取父控件繪製的背景。少數沒有ParentBackground屬性來控制TPanel和Tscrollbox這種行爲。 ParentColor和擴展顏色屬性僅適用於主題被禁用時。雖然使用面板的凌亂不僅適用於主題,而且適用於DevExpress的ExpressSkins for VCL等各種皮膚庫。 – Brian 2011-06-02 16:48:52

3

你可以試試禁用每個複選框使用SetWindowTheme函數的主題。

SetWindowTheme(CheckBox1->Handle, NULL, ""); 

我不知道如果第二個參數需要NULLL" "作爲文檔中提到。

SetWindowTheme(CheckBox1->Handle, L" ", ""); 

我用以下參考來回答這個問題。
http://www.delphigroups.info/3/7/54654.html
borland.public.delphi.ide.general

+0

第二個讓我在那裏 - 視覺樣式肯定是禁用的,我通過的控件。唯一的問題是我現在似乎無法在我調用SetWindowTheme後自定義樣式TCheckBox,它只是保留默認樣式。看起來第二個鏈接中的人有同樣的問題,但沒有得到直接的答案。 – Troyen 2011-05-16 20:45:52