1

我正在使用一个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 样式。

字体对话框

此外,使用下拉列表选择字体名称也不起作用:

未设置 Property Inspector 的字体名称

所以,我认为这与我拥有的字体版本和一些扩展属性有关(实际上,在我的 Fonts 文件夹中我只能看到 Segoe UI,打开它会打开 10 个窗口。)

Windows 字体文件夹中的 Segoe UI

我仍在寻找解决方法(这听起来可能是相关的,但他们没有遵循它)

4

0 回答 0