更改默认TextSettings字体系列/大小(XE7)

时间:2014-11-19 17:50:57

标签: delphi ide firemonkey

我目前正在开发Windows 8.1和OSX Yosemite的应用程序。

Firemonkey使用Segoe UI(12)和Helvetica(13)作为默认字体系列和大小。

有人知道改变这些默认设置或完全取消它们的方法:

enter image description here

由于默认字体具有不同的字体大小(12和13),因此很难获得相同的外观。

enter image description here

正如你所看到的,除了默认值之外,其他尺寸看起来都相同。

如果要在OSX中显示文本大小为12的字体,则必须在运行时执行此操作。那是因为如果你在设计器中设置文本大小12,它会自动切换到(默认)并在编译mac时将其更改为13.

4 个答案:

答案 0 :(得分:5)

您可以通过替换IFMXSystemFontService来更改默认字体和大小:

unit My.FontService;

interface

uses
  FMX.Platform;

type
  TmyFMXSystemFontService = class(TInterfacedObject, IFMXSystemFontService)
  public
    function GetDefaultFontFamilyName: string;
    function GetDefaultFontSize: Single;
  end;

implementation  

function TmyFMXSystemFontService.GetDefaultFontFamilyName: string;
begin
  Result := 'Lato';
end;

function TmyFMXSystemFontService.GetDefaultFontSize: Single;
begin
  Result := 12;
end;

procedure InitFont;
begin
  if TPlatformServices.Current.SupportsPlatformService(IFMXSystemFontService) then
    TPlatformServices.Current.RemovePlatformService(IFMXSystemFontService);

  TPlatformServices.Current.AddPlatformService(IFMXSystemFontService, TmyFMXSystemFontService.Create);
end;

initialization

InitFont;

end.

默认字体大小(在XE10中,不知道XE7)

  • for Windows:12(请参阅FMX.Platform.Win.pas中的DefaultWindowsFontSize)
  • for iOS:14(参见FMX.Platform.iOS.pas中的DefaultiOSFontSize)
  • for OS X:13(参见FMX.Platform.Mac.pas中的DefaultMacFontSize)

答案 1 :(得分:0)

我希望默认意味着它使用了样式中的设置。您可以在“工具”菜单上的“位图样式设计器”中打开样式,进行任何更改以及“另存为FireMonkey”样式。

我不确定是否有一种简单的方法可以更改默认值。这可能意味着单独更改每种字体。

答案 2 :(得分:0)

解决方法:

var
  Settings: ITextSettings;
  Instance: TComponent;
  i: integer;
begin

  for i := 0 to ComponentCount - 1 do
  begin
    Instance := Components[i];

    if IInterface(Instance).QueryInterface(ITextSettings, Settings) = S_OK then
    begin
      Settings.TextSettings.BeginUpdate;
      try
        Settings.DefaultTextSettings.Font.Size := 12;
        Settings.DefaultTextSettings.Font.Family := 'Comic Sans MS';
      finally
        Settings.TextSettings.EndUpdate;
      end;
    end;
  end;

答案 3 :(得分:0)

真正的问题是,此属性的默认值使用不当。 这是Embarcadero的一个错误。当然!

我的解决方案,在TStyleBooks组件中,放置一个值,接近12,但不是12。

具体来说我使用" 11.9"。 Delphi属性编辑器不会将此值假定为默认值。但是当您运行该程序时,系统会以字体大小将其正确转换为12。在Mac OS X和Windows中也是如此。