3

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;
4

1 に答える 1

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)

于 2012-11-25T12:46:47.520 に答える