Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

ownerItem в главной строке меню работает, а в подменю нет


L`Autour ©   (2010-02-14 16:24:00) 

В обработчиках OnDrawItem и OnMeasureItem по значению индексов видно,  что подменю совсем не приходят в обработку ownerItem.


L`Autour   (2010-02-17 17:09:00) [1]

Спасибо. Теперь подменю работает.


Vladimir Kladov   (2010-02-16 18:55:00) [2]

owner DrawItem ?

Заинтриговался. Меня тоже давно удивляло, почему же не удается в новых версиях откомпилировать DemoMenuMeasureItem, чтобы меню вело себя как 8 лет назад в скомпилированном в версии 154 проекте.

Выяснилось вот что: В те времена MCK генерировал присваивание
MainMenu1.Items[ miKind ].OwnerDraw := TRUE;
в Unit_1.inc (немного не так:
Result.MainMenu1.Items[ 1 ].OwnerDraw := TRUE;, но суть та). Теперь этот код для подменю вообще не генерируется, а установка OwnerDraw для всего меню генерирует эти присваивания для пунктов меню верхнего уровня, что совсем не правильно.

В общем, если присваивание выше добавить в OnCreate, и не назначать OwnerDraw на все меню, то все становится совсем как в скомпилированном демо.

Насчет сообщений WM_MeasureItem: они приходят для субменю при первом показе родительского пункта, когда действительно надо измерить дочерние пункты, так в Windows сделано изначально.


L'Autour   (2010-02-14 18:08:00) [3]

ownerItem у главного меню и всех его пунктов меню включен. Обработчики OnDrawItem и OnMeasureItem для главного меню указаны, но кроме пунктов главной строки меню в них ничего не приходит.


Дмитрий К   (2010-02-14 17:29:00) [4]

А вы им эту обработку назначаете?


Наверх

Титульная страница Поиск, карта сайта Написать письмо