我正在使用一个TJvWizard
组件,我想将其标题标题字体设置为使用 Segoe UI Light。在我的表单OnCreate
方法中,我正在执行以下操作:
procedure TForm1.FormCreate(Sender: TObject);
var
i: Integer;
begin
for i := 0 to JvWizard1.PageCount - 1 do
begin
JvWizard1.Pages[i].Header.ParentFont := false;
JvWizard1.Pages[i].Header.Title.Font.Size := 16;
JvWizard1.Pages[i].Header.Title.Font.Name := 'Segoe UI Light';
end;
end;
此代码正确设置字体大小,但字体不会更改为 Segoe UI Light,而是继续使用父字体(即 Segoe UI。)
作为一种解决方法,我这样做了:
procedure TForm1.FormCreate(Sender: TObject);
var
i: Integer;
f: TFont;
begin
f := TFont.Create;
f.Name := 'Segoe UI Light';
f.Size := 16;
for i := 0 to JvWizard1.PageCount - 1 do
begin
JvWizard1.Pages[i].Header.Title.Font.Assign(f);
end;
f.Free;
end;
这可以解决问题,但对我来说它闻起来很有趣。另外,我不知道分配是如何工作的。它是否保留参考?我应该保持f.Free
线路吗?
编辑:作为附加信息,我安装了带有这些字体的相当新版本的 Office 2013。我还观察到我无法在其他应用程序中选择 Segoe UI Light,例如 InkScape。
此外,在 Delphi 属性编辑器中,我可以使用字体选择对话框来选择它,但名称“Segoe UI Light”没有出现;相反,我必须选择 Segoe UI 并在字体样式列表中选择 Light 样式。
此外,使用下拉列表选择字体名称也不起作用:
所以,我认为这与我拥有的字体版本和一些扩展属性有关(实际上,在我的 Fonts 文件夹中我只能看到 Segoe UI,打开它会打开 10 个窗口。)
我仍在寻找解决方法(这听起来可能是相关的,但他们没有遵循它)