在TJvWizard中以编程方式设置Segoe UI Light

时间:2013-08-07 17:17:58

标签: delphi delphi-xe jvcl

我正在使用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;

此代码正确设置字体大小但Font不会更改为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;

这就是诀窍,但它对我来说很有趣。另外,我不知道Assign是如何工作的。它是否有参考?我应该保留f.Free行吗?

编辑:作为附加信息,我安装了Office 2013,并附带了这些字体的最新版本。我还观察到我无法在其他应用程序中选择Segoe UI Light,例如InkScape。

此外,在Delphi属性编辑器中,我可以使用字体选择对话框选择它,但不会出现名称“Segoe UI Light”;相反,我必须选择Segoe UI,在字体样式列表中我选择Light样式。

Font dialog

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

Font name from Property Inspector not set

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

Segoe UI in the Windows Font folder

我仍然在寻找解决方法(this sounds like it may be related,但他们没有遵循它)

0 个答案:

没有答案