![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
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]А вы им эту обработку назначаете?