|
Модераторы: Poseidon, Snowy, bems, MetalFan |
|
Prok12 |
|
||||||
Новичок Профиль Группа: Участник Сообщений: 9 Регистрация: 8.11.2011 Репутация: 3 Всего: 3 |
Никогда не увлекался рюшечками и украшательствами в оформлении приложения, но... Перешёл с XE8 на Tokyo 10.2.2. И тут заметил, что пункты (Items) в MainMenu стали отображаться как-то не так, как было в XE8. Знаю, что в Tokyo что-то поломали в DPI. У меня, например, экран (там где разрабатывается приложение) с высоким разрешением, так что в самой среде Windows задан пользовательский масштаб 125% (120 DPI). Теперь (Tokyo 10.2.2) масштабирование форм даже на том же компе, где идёт разработка, выполняется неверно в режиме для форм Scaled=True. Потому ставлю для всех форм Scaled=False, а в конструкторе каждой формы (событие OnCreate) добавляю
То есть, при переходе на другой комп масштабирование выполняется "вручную". Но это пол-беды: проблема, решаемая сравнительно просто... Самое неприятное, что в MainMenu (оно у меня рисовалось в дефолтном режиме OwnerDraw=False) те пункты, которые были с иконками, отображаются крупным шрифтом, а те что без иконок - мелким (обычным, как надо). Иконки задавались в свойствах Bitmap для Items в меню, 16х16. Проблема управления шрифтами Menu - известная, поднималась неоднократно, например для Delphi Seattle : https://stackoverflow.com/questions/3302009...-delphi-seattle Далее по пунктам. ---------------------------- 1) Первое что пришло в голову, перейти в режим отрисовки главного меню OwnerDraw=True. Всё Меню нарисовалось одинаковым шрифтом, но...очень крупным. Управлять шрифтом по-простому - нечем. ---------------------------- 2) Полазив по просторам мировой паутины, пытаюсь задавать Screen.MenuFont.Size. Да, поначалу помогло. Но потом выяснилось, что по мере запуска других приложений на компе что-то сбивается, и снова MainMenu отрисовывается слишком крупным шрифтом. ---------------------------- 3) По совету из того же Интернета скачал RyMenu.zip. Работает, но... Во первых, не отображает иконки именно из свойства Bitmap пп. меню, а только из ImageList (что, впрочем, удобнее). Во-вторых, иконки в самой верхней строке меню (их которой раскрываются под-меню - сразу под заголовком формы), у меня вообще не отображаются, а мне и они нужны (показано на правой части прилагаемого рисунка красной стрелкой вверх). ---------------------------- 4) Выход нашёл такой. 4.1. Создаём всё MainMenu как обычно в Delphi - через Object Inspector. 4.2. Все иконки для меню 16х16 запихиваем в компонент TImageList : его надо добавить на форму и связать в Object Inspector с MainMenu; для каждого под-пункта Меню (Item) просто выбираем номер иконки из этого списка TImageList (ну это всем понятно - обычный способ). 4.3. Задаём режим отрисовки Меню OwnerDraw=True : это важно! 4.4. В разделе интерфейса основной формы (для которой Меню) сразу после uses прописываем 9 строк:
4.5. В раздел Imlementation пишем реализацию переопределённого метода AdvancedDrawItem (который мы уже в пп.4.4 "вывели из тени" на свет - Protected) :
Названия (Name) пунктов меню, для которых требуется особый шрифт, будут у вас свои, конечно. У меня в примере это FileExitItem, RunItem, DataBaseItem. Всё !! Итак, буквально 20 коротких строк кода потребовалось добавить для управления шрифтами MainMenu. Цветом шрифтов Меню, увы, так просто управлять не удастся. Вид полученного Меню в двух режимах активности его под-пунктов - на прилагаемом рисунке. Это сообщение отредактировал(а) Prok12 - 10.2.2018, 14:50 Присоединённый файл ( Кол-во скачиваний: 17 ) MainMenu_FONT_Go_.jpg 161,86 Kb |
||||||
|
|||||||
Правила форума "Delphi: Общие вопросы" | |
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |