gpt4 book ai didi

delphi - 使用 Vcl 样式时更改 TActionMainMenuBar 的字体

转载 作者:行者123 更新时间:2023-12-03 15:27:31 32 4
gpt4 key购买 nike

通常可以像这样更改 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;

结果将是

enter image description here

关于delphi - 使用 Vcl 样式时更改 TActionMainMenuBar 的字体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13154517/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com