我想获得 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;

最佳答案

我认为这有效:

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 )

关于delphi - 如何获得 TGroupBox 主题的标题字体颜色,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13550944/

10-10 10:48