Vcl Styles currently do not read and apply full font data from custom style, only color.
However with some hacking you can access complete font information in custom style, but you will have to apply fonts to controls manually, or you can use ParentFont
property of form.
With following code you can access fonts stored in custom styles (tested in XE4, but basic idea can be applied to other Delphi versions, if there are some differences)
unit StyleFonts;
interface
uses
Winapi.Windows,
Winapi.Messages,
System.SysUtils,
System.Classes,
System.Types,
System.UITypes,
System.Zlib,
Vcl.Consts,
Vcl.Graphics,
Vcl.Controls,
Vcl.Forms,
Vcl.ImgList,
Vcl.GraphUtil,
Vcl.Styles,
Vcl.Themes;
function GetStyleFont(Font: TStyleFont): TFont;
implementation
// use files from source\vcl
{$I StyleUtils.inc}
{$I StyleAPI.inc}
var
SystemFont: TFont;
procedure InitializeSystemFont;
var
NonClientMetrics: TNonClientMetrics;
begin
SystemFont := TFont.Create;
FillChar(NonClientMetrics, SizeOf(NonClientMetrics), 0);
// following function will fill up cbSize with correct size for XP system
NonClientMetrics.cbSize := TNonClientMetrics.SizeOf;
if SystemParametersInfo(SPI_GETNONCLIENTMETRICS, 0, @NonClientMetrics, 0) then
SystemFont.Handle := CreateFontIndirect(NonClientMetrics.lfMessageFont)
end;
type
TStyleHelper = class helper for TCustomStyle
public
function GetSource: TObject; { TseSkin }
end;
function TStyleHelper.GetSource: TObject;
begin
Result := Self.FSource;
end;
function GetStyleFont(Font: TStyleFont): TFont;
var
LStyle: TCustomStyle;
FSource: TObject;
SeFont: TSeStyleFont;
begin
if TStyleManager.IsCustomStyleActive then
begin
LStyle := TCustomStyle(TStyleManager.ActiveStyle);
FSource := LStyle.GetSource;
// case based on Vcl.Styles TCustomStyle.DoGetStyleFontColor
case Font of
sfButtonTextDisabled: Result := TSeStyle(FSource).Fonts[ktfButtonTextDisabled];
sfButtonTextFocused: Result := TSeStyle(FSource).Fonts[ktfButtonTextFocused];
sfButtonTextHot: Result := TSeStyle(FSource).Fonts[ktfButtonTextHot];
sfButtonTextNormal: Result := TSeStyle(FSource).Fonts[ktfButtonTextNormal];
sfButtonTextPressed: Result := TSeStyle(FSource).Fonts[ktfButtonTextPressed];
sfCaptionTextInactive: Result := TSeStyle(FSource).Fonts[ktfCaptionTextInactive];
sfCaptionTextNormal: Result := TSeStyle(FSource).Fonts[ktfCaptionTextNormal];
sfCategoryPanelGroupHeaderHot: Result := TSeStyle(FSource).Fonts[ktfCategoryPanelGroupHeaderHot];
sfCategoryPanelGroupHeaderNormal: Result := TSeStyle(FSource).Fonts[ktfCategoryPanelGroupHeaderNormal];
sfCatgeoryButtonsCategoryNormal: Result := TSeStyle(FSource).Fonts[ktfCatgeoryButtonsCategoryNormal];
sfCatgeoryButtonsCategorySelected: Result := TSeStyle(FSource).Fonts[ktfCatgeoryButtonsCategorySelected];
sfCatgeoryButtonsHot: Result := TSeStyle(FSource).Fonts[ktfCatgeoryButtonsHot];
sfCatgeoryButtonsNormal: Result := TSeStyle(FSource).Fonts[ktfCatgeoryButtonsNormal];
sfCatgeoryButtonsSelected: Result := TSeStyle(FSource).Fonts[ktfCatgeoryButtonsSelected];
sfCheckBoxTextDisabled: Result := TSeStyle(FSource).Fonts[ktfCheckBoxTextDisabled];
sfCheckBoxTextFocused: Result := TSeStyle(FSource).Fonts[ktfCheckBoxTextFocused];
sfCheckBoxTextHot: Result := TSeStyle(FSource).Fonts[ktfCheckBoxTextHot];
sfCheckBoxTextNormal: Result := TSeStyle(FSource).Fonts[ktfCheckBoxTextNormal];
sfCheckBoxTextPressed: Result := TSeStyle(FSource).Fonts[ktfCheckBoxTextPressed];
sfComboBoxItemDisabled: Result := TSeStyle(FSource).Fonts[ktfComboBoxItemDisabled];
sfComboBoxItemFocused: Result := TSeStyle(FSource).Fonts[ktfComboBoxItemFocused];
sfComboBoxItemHot: Result := TSeStyle(FSource).Fonts[ktfComboBoxItemHot];
sfComboBoxItemNormal: Result := TSeStyle(FSource).Fonts[ktfComboBoxItemNormal];
sfComboBoxItemSelected: Result := TSeStyle(FSource).Fonts[ktfComboBoxItemSelected];
sfEditBoxTextDisabled: Result := TSeStyle(FSource).Fonts[ktfEditBoxTextDisabled];
sfEditBoxTextFocused: Result := TSeStyle(FSource).Fonts[ktfEditBoxTextFocused];
sfEditBoxTextHot: Result := TSeStyle(FSource).Fonts[ktfEditBoxTextHot];
sfEditBoxTextNormal: Result := TSeStyle(FSource).Fonts[ktfEditBoxTextNormal];
sfEditBoxTextSelected: Result := TSeStyle(FSource).Fonts[ktfEditBoxTextSelected];
sfGridItemFixedHot: Result := TSeStyle(FSource).Fonts[ktfGridItemFixedHot];
sfGridItemFixedNormal: Result := TSeStyle(FSource).Fonts[ktfGridItemFixedNormal];
sfGridItemFixedPressed: Result := TSeStyle(FSource).Fonts[ktfGridItemFixedPressed];
sfGridItemNormal: Result := TSeStyle(FSource).Fonts[ktfGridItemNormal];
sfGridItemSelected: Result := TSeStyle(FSource).Fonts[ktfGridItemSelected];
sfGroupBoxTextDisabled: Result := TSeStyle(FSource).Fonts[ktfGroupBoxTextDisabled];
sfGroupBoxTextNormal: Result := TSeStyle(FSource).Fonts[ktfGroupBoxTextNormal];
sfHeaderSectionTextDisabled: Result := TSeStyle(FSource).Fonts[ktfHeaderSectionTextDisabled];
sfHeaderSectionTextHot: Result := TSeStyle(FSource).Fonts[ktfHeaderSectionTextHot];
sfHeaderSectionTextNormal: Result := TSeStyle(FSource).Fonts[ktfHeaderSectionTextNormal];
sfHeaderSectionTextPressed: Result := TSeStyle(FSource).Fonts[ktfHeaderSectionTextPressed];
sfListItemTextDisabled: Result := TSeStyle(FSource).Fonts[ktfListItemTextDisabled];
sfListItemTextFocused: Result := TSeStyle(FSource).Fonts[ktfListItemTextFocused];
sfListItemTextHot: Result := TSeStyle(FSource).Fonts[ktfListItemTextHot];
sfListItemTextNormal: Result := TSeStyle(FSource).Fonts[ktfListItemTextNormal];
sfListItemTextSelected: Result := TSeStyle(FSource).Fonts[ktfListItemTextSelected];
sfMenuItemTextDisabled: Result := TSeStyle(FSource).Fonts[ktfMenuItemTextDisabled];
sfMenuItemTextHot: Result := TSeStyle(FSource).Fonts[ktfMenuItemTextHot];
sfMenuItemTextNormal: Result := TSeStyle(FSource).Fonts[ktfMenuItemTextNormal];
sfMenuItemTextSelected: Result := TSeStyle(FSource).Fonts[ktfMenuItemTextSelected];
sfPanelTextDisabled: Result := TSeStyle(FSource).Fonts[ktfPanelTextDisabled];
sfPanelTextNormal: Result := TSeStyle(FSource).Fonts[ktfPanelTextNormal];
sfPopupMenuItemTextDisabled: Result := TSeStyle(FSource).Fonts[ktfPopupMenuItemTextDisabled];
sfPopupMenuItemTextHot: Result := TSeStyle(FSource).Fonts[ktfPopupMenuItemTextHot];
sfPopupMenuItemTextNormal: Result := TSeStyle(FSource).Fonts[ktfPopupMenuItemTextNormal];
sfPopupMenuItemTextSelected: Result := TSeStyle(FSource).Fonts[ktfPopupMenuItemTextSelected];
sfRadioButtonTextDisabled: Result := TSeStyle(FSource).Fonts[ktfRadioButtonTextDisabled];
sfRadioButtonTextFocused: Result := TSeStyle(FSource).Fonts[ktfRadioButtonTextFocused];
sfRadioButtonTextHot: Result := TSeStyle(FSource).Fonts[ktfRadioButtonTextHot];
sfRadioButtonTextNormal: Result := TSeStyle(FSource).Fonts[ktfRadioButtonTextNormal];
sfRadioButtonTextPressed: Result := TSeStyle(FSource).Fonts[ktfRadioButtonTextPressed];
sfSmCaptionTextInactive: Result := TSeStyle(FSource).Fonts[ktfSmCaptionTextInactive];
sfSmCaptionTextNormal: Result := TSeStyle(FSource).Fonts[ktfSmCaptionTextNormal];
sfStatusPanelTextDisabled: Result := TSeStyle(FSource).Fonts[ktfStatusPanelTextDisabled];
sfStatusPanelTextNormal: Result := TSeStyle(FSource).Fonts[ktfStatusPanelTextNormal];
sfTabTextActiveDisabled: Result := TSeStyle(FSource).Fonts[ktfTabTextActiveDisabled];
sfTabTextActiveHot: Result := TSeStyle(FSource).Fonts[ktfTabTextActiveHot];
sfTabTextActiveNormal: Result := TSeStyle(FSource).Fonts[ktfTabTextActiveNormal];
sfTabTextInactiveDisabled: Result := TSeStyle(FSource).Fonts[ktfTabTextInactiveDisabled];
sfTabTextInactiveHot: Result := TSeStyle(FSource).Fonts[ktfTabTextInactiveHot];
sfTabTextInactiveNormal: Result := TSeStyle(FSource).Fonts[ktfTabTextInactiveNormal];
sfTextLabelDisabled: Result := TSeStyle(FSource).Fonts[ktfStaticTextDisabled];
sfTextLabelFocused: Result := TSeStyle(FSource).Fonts[ktfStaticTextFocused];
sfTextLabelHot: Result := TSeStyle(FSource).Fonts[ktfStaticTextHot];
sfTextLabelNormal: Result := TSeStyle(FSource).Fonts[ktfStaticTextNormal];
sfToolItemTextDisabled: Result := TSeStyle(FSource).Fonts[ktfToolItemTextDisabled];
sfToolItemTextHot: Result := TSeStyle(FSource).Fonts[ktfToolItemTextHot];
sfToolItemTextNormal: Result := TSeStyle(FSource).Fonts[ktfToolItemTextNormal];
sfToolItemTextSelected: Result := TSeStyle(FSource).Fonts[ktfToolItemTextSelected];
sfTreeItemTextDisabled: Result := TSeStyle(FSource).Fonts[ktfTreeItemTextDisabled];
sfTreeItemTextFocused: Result := TSeStyle(FSource).Fonts[ktfTreeItemTextFocused];
sfTreeItemTextHot: Result := TSeStyle(FSource).Fonts[ktfTreeItemTextHot];
sfTreeItemTextNormal: Result := TSeStyle(FSource).Fonts[ktfTreeItemTextNormal];
sfTreeItemTextSelected: Result := TSeStyle(FSource).Fonts[ktfTreeItemTextSelected];
sfWindowTextDisabled: Result := TSeStyle(FSource).Fonts[ktfWindowTextDisabled];
sfWindowTextNormal: Result := TSeStyle(FSource).Fonts[ktfWindowTextNormal];
else Result := SystemFont;
end;
end
else Result := SystemFont;
end;
initialization
InitializeSystemFont;
finalization
SystemFont.Free;
end.