Как определить Windows Theme TColors - PullRequest
1 голос
/ 30 мая 2011

Я эмулирую (насколько это возможно) меню TPopup, чтобы оно могло плавать и пользователи могли перетаскивать его.

Для этого он находится в своей собственной форме и использует TPanels, действующие так, как будто они являются активируемыми TMenuItems.

Я использую TPanels, чтобы я мог изменить их цвет.

Чтобы получить правильные цвета, как я могу определить во время выполнения (в Delphi 2010) цвета текущей темы для TMenuItem.Color и TMenuItem.Font.Color (при условии, что такие свойства существуют).

ТИА

Редактировать

Я мог бы использовать clBtnFace для фона и clWindowText для цвета текста. Но мне нужно знать цвета темы, когда мышь находится над выбором меню.

Ответы [ 3 ]

5 голосов
/ 30 мая 2011

Посмотрите на мой ответ на Как получить цвет для тематической вкладки - особенно для редактирования.

Соответствующие константы можно найти в разделе Детали и состояния . Просто найдите «МЕНЮ» на этой странице.

Редактировать: Существуют инструменты для визуального изучения тем - см. Визуальные темы Windows: Галерея деталей и состояний? . (Спасибо @TOndrej за это.)

3 голосов
/ 30 мая 2011

Я полагаю, что всплывающее меню использует цвет в константе clMenu. Если вам нужен цвет как значение rgb, используйте ColorToRgb(clMenu) для его перевода. Также есть константы clMenuBar, clMenuText и clMenuHighlight.

1 голос
/ 30 мая 2011

Вы можете использовать константы clMenu и clMenuText.

В Graphics.pas

определены другие цвета окон
...