Модераторы: Snowy, MetalFan, bems, Poseidon
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> PopupMenu & CM_FONTCHANGED, отловить в popupmenu изменение шрифта фо 
:(
    Опции темы
Вася К.
Дата 6.3.2008, 12:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 101
Регистрация: 9.2.2005

Репутация: нет
Всего: нет



Здравствуйте!

Как можно отловить изменение шрифта формы в PopupMenu? Например, в некоторых компонентах, при ParentFont := True, я писал такую процедуру, выдранную из исходников делфи:

Код

procedure CMFontChanged(var Message: TMessage); message CM_FONTCHANGED;



и все работало, но с PopupMenu, видать, дело обстоит иначе.

Спасибо!
--------------------
Да здраствует ОПТИМИЗМ!
PM MAIL YIM   Вверх
Snowy
Дата 6.3.2008, 12:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: 31
Всего: 484



Попуп нам неподвластен.
Если нужно расширять его функционал, то проще создать свой аналог.
Меню - штука модальная и сторонняя. При вызове, наш тред стопорится и передаёт управление Windows. Так что контролировать нечем - стоим, ждём завершения...
PM MAIL   Вверх
bems
Дата 6.3.2008, 16:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 3400
Регистрация: 5.1.2006

Репутация: 18
Всего: 88



Цитата(Snowy @  6.3.2008,  12:54 Найти цитируемый пост)
При вызове, наш тред стопорится и передаёт управление Windows. Так что контролировать нечем - стоим, ждём завершения... 
А как он тогда менюшные сообщения обрабатывает?


Цитата(Вася К. @  6.3.2008,  12:06 Найти цитируемый пост)
Как можно отловить изменение шрифта формы в PopupMenu?
а зачем? если для того чтобы у меню был тот же шрифт, что и у формы, то делай свою отрисовку в обработчике OnDrawItem



--------------------
Обижено школьников: 8
PM MAIL   Вверх
Snowy
Дата 6.3.2008, 16:09 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: 31
Всего: 484



Окно меню не находится под нашим управлением.
Им управляет система.
Да, у него есть механизм колбэков.
Но заставить его делать что-то, что не предусмотрено апи, не выйдет.
То есть заставить его ловить сообщение и отдавать управление нам не получится.
Что касается отработки колбэка OnDrawItem - это подойдёт, если только не будет изменён размер строки.
То есть, при смене фонта 10-го размера на 24-й не пройдёт гладко - требуется корректировка высоты итемов.
Если меняется только фонт, но не размер, то более-менее приемлемый вариант.
Но перерисовка всего меню при этом не произойдёт.
PM MAIL   Вверх
bems
Дата 7.3.2008, 11:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 3400
Регистрация: 5.1.2006

Репутация: 18
Всего: 88



Цитата(Snowy @  6.3.2008,  16:09 Найти цитируемый пост)
Окно меню не находится под нашим управлением.
Им управляет система.
Да, у него есть механизм колбэков.
Но заставить его делать что-то, что не предусмотрено апи, не выйдет.
То есть заставить его ловить сообщение и отдавать управление нам не получится.

сабклассинг?

Цитата(Snowy @  6.3.2008,  16:09 Найти цитируемый пост)
Что касается отработки колбэка OnDrawItem - это подойдёт, если только не будет изменён размер строки.
То есть, при смене фонта 10-го размера на 24-й не пройдёт гладко - требуется корректировка высоты итемов.

OnMeasureItem?


Цитата(Snowy @  6.3.2008,  16:09 Найти цитируемый пост)
Но перерисовка всего меню при этом не произойдёт. 
вот поэтому я и спрашиваю зачем это нужно. В большинстве случаев фонт будет изменен когда меню нет на экране и изменения появятся при слебующем отображении меню. Может автору подходит?



--------------------
Обижено школьников: 8
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Для новичков"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0506 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.