4

通常可以像这样更改 TActionMainMenuBar 或 TMainMenu 的字体:

Screen.MenuFont.Name := 'Calibri';

使用 Vcl 样式时,如果为组件注册了 StyleHook,则不再可能。我进入位图样式设计器(以前称为 Vcl 样式设计器)并更改了MenuItemTextNormal的字体。

问题是更改字体没有任何作用,我只能成功更改文本的颜色。

显然我在这里遗漏了一些东西,为什么我可以更改颜色而不是字体?

4

1 回答 1

5

正如您所说,在样式设计器中更改MenuItemTextNormal元素(或任何其他元素)的字体没有效果,这是因为 Vcl 样式引擎只是忽略了字体大小和名称,而只是使用 vcl 样式文件中定义的字体颜色.

作为解决方法,您必须定义和注册一个新的TActionBarStyleEx后代并覆盖 TCustomMenuItem 和 TCustomMenuButton 类的 DrawText 方法,使用 Screen.MenuFont 的值来绘制菜单。

我刚刚在Vcl Styles UtilsVcl.PlatformVclStylesActnCtrls项目中添加了一个新单元 ( ),它实现了一个新的 Action Bar Style,它允许自定义组件的字体和大小。TActionMainMenuBar

要使用它,只需将 Vcl.PlatformVclStylesActnCtrls 单元添加到您的项目中,更改Screen.MenuFont字体的值,例如

 Screen.MenuFont.Name := 'Impact';
 Screen.MenuFont.Size := 12;

然后像这样设置 TActionManager 的样式

  ActionManager1.Style:=PlatformVclStylesStyle;

结果将是

在此处输入图像描述

于 2012-11-09T02:02:24.960 回答