使用Vcl的样式时更改TActionMainMenuBar的字体(Changing font of

2019-08-02 03:56发布

通常情况下一个可以改变一个TActionMainMenuBar或TMainMenu这样的字体:

Screen.MenuFont.Name := 'Calibri';

当使用Vcl的风格,如果一个StyleHook注册的组件,这是不可能的了。 我走进了位图样式设计(前身为Vcl的样式设计),并改变了字体为MenuItemTextNormal。

问题是,改变字体什么都不做,我只能成功改变文本的颜色。

显然,我在这里失去了一些东西,我为什么可以改变颜色,但不是字体?

Answer 1:

至于你说的改变MenuItemTextNormal元素在风格设计的字体(或任何其他)没有任何影响,这是因为对VCL风格引擎会忽略字体大小和名称,只是用在VCL样式文件中定义的字体颜色。

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

我只是增加了一个新的单位( Vcl.PlatformVclStylesActnCtrls )到Vcl的样式utils的项目,该项目实现了新的操作栏样式,允许自定义的字体和大小TActionMainMenuBar组件。

要使用它只有Vcl.PlatformVclStylesActnCtrls单元添加到项目中,改变的值Screen.MenuFont字体像

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

然后设置你的TActionManager的风格,像这样

  ActionManager1.Style:=PlatformVclStylesStyle;

其结果将是



文章来源: Changing font of TActionMainMenuBar when using Vcl styles