Можно ли установить шрифт встроенного в ленточные контроллеры (D2009)? - PullRequest
0 голосов
/ 26 августа 2010

Я хотел бы увеличить размер шрифта стандартных (D2009) элементов управления ленты, но я не нашел возможности сделать это. Можно ли вообще изменить шрифт? Когда да, как?

спасибо

1 Ответ

1 голос
/ 26 августа 2010

TRibbon имеет опубликованное свойство Font, я бы использовал это?

alt text

Просто убедитесь, что у вас не выбран какой-либо субкомпонент ленты, или, когда вы это делаете, нажимайте escape, пока Инспектор объектов не покажет свойства для самого TRibbon.

Обновление (в ответ на комментарий)

Это работает для меня, просто попробовал, чтобы убедиться. Я использовал FontSelector из библиотеки компонентов ( TMS Software ) и установил Ribbon1.Font.Name для любого допустимого имени шрифта (полученного из системы с помощью селектора шрифтов), такого как «Verdana» или «Comic Sans MS» оказал немедленное видимое влияние на весь текст, отображаемый на ленте.

Итак:

Ribbon1.Font.Name = 'Comic Sans MS';

должен сделать свое дело, хотя для его проверки я бы, вероятно, выбрал шрифт (например, «Современный»), для которого разница с Tahoma (стандартным системным шрифтом в большинстве систем) немного более очевидна.

Примечание: не проверял это, но я не удивлюсь, если вы сможете использовать только шрифты True Type с лентой.

Обновление

Андреас Рейбранд только что отметил, что в моем предыдущем обновлении я упустил из виду тот факт, что ОП хотел изменить размер шрифта, а не лицо шрифта (как определено его именем). К сожалению, как выясняется, хотя свойство Font, конечно, имеет размер, изменение, которое на самом деле не имеет никакого эффекта ... хм, а почему бы и нет?

Некоторое расследование показало следующее

  • Размер шрифта изменяется
  • Лента наконец получает сообщение CMFONTCHANGED
  • Обработка этих сообщений заставляет ленту изменять шрифт всех панелей действий, подключенных к ленте
  • Затем запускается RebuildRibbonMetrics
  • Затем приступает к установке Tabs[I].Page.Canvas.Font.Size := GetRibbonMetric(rmFontSize);
  • И GetRibbonMetric - о чудо - возвращает 8, безусловно, жестко закодировано, даже не константа, а просто целочисленный литерал.

Что ж, есть причина, по которой вы можете изменить размер шрифта ленты в соответствии с содержанием вашего сердца, но это никогда не даст никакого эффекта.

Почему это так закодировано? Не знаю. Возможно, придется спросить у Borcadero об этом через Quality Central. Я пробежался по руководству MS Ribbon Control Guide и не могу вспомнить ничего, что говорит, что размер шрифта ленты всегда должен быть 8 ...

...