我正在使用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样式。
此外,使用下拉列表选择字体名称也不起作用:
所以,我认为这与我拥有的字体版本和一些扩展属性有关(实际上,在我的Fonts文件夹中我只能看到Segoe UI,打开它会打开10个窗口。)
我仍然在寻找解决方法(this sounds like it may be related,但他们没有遵循它)