2012-11-25 34 views
3

我想獲得TGroupBox標題的字體顏色,所以我可以將該顏色分配給TLabel。如何獲取TGroupBox主題字體顏色

我想我需要使用GetThemeColor,但我似乎無法弄清楚使用哪些參數?


更新 - 這是我使用基於答案代碼:

function GetGroupBoxTextColor: TColor; 
var 
    C: COLORREF; 
    ElementDetails: TThemedElementDetails; 
begin 
    Result := clWindowText; 
    if ThemeServices.ThemesEnabled then 
    begin 
    ElementDetails := ThemeServices.GetElementDetails(tbGroupBoxNormal); 
    if GetThemeColor(ThemeServices.Theme[teButton], ElementDetails.Part, ElementDetails.State, TMT_TEXTCOLOR, C) = S_OK then 
     Result := C; 
    end; 
end; 

回答

5

我想這樣的作品:

var 
    h: HTHEME; 
    clr: COLORREF; 
begin 
    h := OpenThemeData(Handle, 'BUTTON'); 
    if h <> 0 then 
    try 
     OleCheck(GetThemeColor(h, BP_GROUPBOX, GBS_NORMAL, TMT_TEXTCOLOR, clr)); 
    finally 
     CloseThemeData(h); 
    end; 

(使用OleAuto, UxTheme

+2

什麼是'處理'指的是?表格? – ZigiZ

+0

@ZigiZ,是的,它最有可能是表格句柄。 – TLama

+2

爲什麼'試着...終於'? – OnTheFly

相關問題