Изменение шрифта TActionMainMenuBar при использовании стилей Vcl

Обычно можно изменить шрифт TActionMainMenuBar или TMainMenu следующим образом:

Screen.MenuFont.Name := 'Calibri';

При использовании стилей Vcl это больше невозможно, если для компонента зарегистрирован StyleHook. Я зашел в конструктор растровых стилей (ранее известный как конструктор стилей Vcl) и изменил шрифт на MenuItemTextNormal.

Проблема в том, что изменение шрифта ничего не дает, я могу только успешно изменить цвет текста.

Очевидно, я что-то здесь упускаю, почему я могу изменить цвет, но не шрифт?


person Peter    schedule 31.10.2012    source источник


Ответы (1)


Как вы говорите, изменение шрифта элемента MenuItemTextNormal (или любого другого) в дизайнере стилей не имеет никакого эффекта, потому что механизм стилей Vcl просто игнорирует размер шрифта и имя и просто используйте цвет шрифта, определенный в файле стиля vcl.

В качестве обходного пути вы должны определить и зарегистрировать новый потомок TActionBarStyleEx и переопределить его. методы DrawText классов TCustomMenuItem и TCustomMenuButton, используя значения Screen.MenuFont для рисования меню.

Я только что добавил новый модуль ( Vcl.PlatformVclStylesActnCtrls) в проект Vcl Styles Utils, реализующий новый Стиль панели действий, который позволяет настроить шрифт и размер TActionMainMenuBar компонент.

Чтобы использовать его, добавьте в проект только модуль Vcl.PlatformVclStylesActnCtrls, измените значения шрифта Screen.MenuFont, например

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

а затем установите стиль вашего TActionManager следующим образом

  ActionManager1.Style:=PlatformVclStylesStyle;

И результат будет

введите здесь описание изображения

person RRUZ    schedule 09.11.2012