答案 0 :(得分:3)
我按照这里的说明,他们提供了一些帮助。我有一些可能有用的额外提示,
现在,我添加了以下代码,
procedure TMainForm.FormCreate(Sender: TObject);
begin
AddFontResource('c:\fontpath\myfont.ttf');
SendMessage(HWND_BROADCAST, WM_FONTCHANGE, 0, 0) ;
end;
procedure TMainForm.FormDestroy(Sender: TObject);
begin
RemoveFontResource('c:\fontpath\myfont.ttf');
SendMessage(HWND_BROADCAST, WM_FONTCHANGE, 0, 0) ;
end;
当我以firemonkey形式运行时,我观察到以下情况。
这告诉我我的代码有效(请参阅项目符号1.和6.) - 但如果使用记事本中显示的名称,FMX将无法识别主表单上的字体。我已经四倍检查了字体名称。
我创建了两个相同的项目。一个是VCL,另一个是FMX。 VCL项目非常适用于静态文本和动态文本。 FMX代码既不适用也适用。如果我不得不冒险猜测,我会说FMX正在构建启动时的字体列表,并检查该列表中的可用字体列表(即像缓存一样)。我猜想这是为了从底层操作系统中抽象出FMX ......
如果有人在firemonkey下完成这项工作,我将不胜感激任何建议。 此外,如果有人知道如何在Mac下实现相同的目标,我也会感激指针。
此致
Ed先生。
答案 1 :(得分:1)
您肯定可以使用FMX应用中明确定位到Windows的Winapi.Messages
单元,并在那里定义消息常量。
如果您不想使用Winapi.Messages
,只需在您自己的代码中定义常量:
const
WM_FONTCHANGE = $001D;