通常可以像这样更改 TActionMainMenuBar 或 TMainMenu 的字体:
Screen.MenuFont.Name := 'Calibri';
当使用 Vcl 样式时,如果为组件注册了 StyleHook,则不再可能。 我进入位图样式设计器(以前称为 Vcl 样式设计器)并更改了 MenuItemTextNormal 的字体。
问题是更改字体没有任何作用,我只能成功更改文本的颜色。
显然我在这里遗漏了一些东西,为什么我可以更改颜色但不能更改字体?
最佳答案
正如您所说,在样式设计器中更改 MenuItemTextNormal 元素(或任何其他元素)的字体没有任何效果,这是因为 Vcl 样式引擎只是忽略了字体大小和名称,并且只需使用 vcl 样式文件中定义的字体颜色。
作为解决方法,您必须定义并注册一个新的 TActionBarStyleEx派生并重写 TCustomMenuItem 和 TCustomMenuButton 类的 DrawText 方法,使用 Screen.MenuFont 的值来绘制菜单。
我刚刚向 Vcl.PlatformVclStylesActnCtrls
添加了一个新单位 ( Vcl Styles Utils )项目实现了新的操作栏样式,允许自定义TActionMainMenuBar
的字体和大小。组件。
要使用它,只需将 Vcl.PlatformVclStylesActnCtrls 单元添加到您的项目中,更改 Screen.MenuFont
字体的值,例如
Screen.MenuFont.Name := 'Impact';
Screen.MenuFont.Size := 12;
然后像这样设置 TActionManager 的样式
ActionManager1.Style:=PlatformVclStylesStyle;
结果将是
关于delphi - 使用 Vcl 样式时更改 TActionMainMenuBar 的字体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13154517/