我想获取TGroupBox标题的字体颜色,以便将该颜色分配给TLabel。
我认为我需要使用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;
Handle
是指什么?是指窗体吗? - ZigiZGetThemeColor
可能会抛出异常,但实际上它不会。相反,它可能会返回负的HRESULT
,而这种情况从未被检查过。@TLama,这是惯例,你已经获取了一个对象 - 你有责任释放它。 - OnTheFly