Конференция "KOL" » ownerItem в главной строке меню работает, а в подменю нет
 
  • L`Autour (14.02.10 16:24) [0]
    В обработчиках OnDrawItem и OnMeasureItem по значению индексов видно,  что подменю совсем не приходят в обработку ownerItem.
  • Дмитрий К © (14.02.10 17:29) [1]
    А вы им эту обработку назначаете?
  • L'Autour (14.02.10 18:08) [2]
    ownerItem у главного меню и всех его пунктов меню включен. Обработчики OnDrawItem и OnMeasureItem для главного меню указаны, но кроме пунктов главной строки меню в них ничего не приходит.
  • Vladimir Kladov © (16.02.10 18:55) [3]
    ownerDrawItem ?

    Заинтриговался. Меня тоже давно удивляло, почему же не удается в новых версиях откомпилировать 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 (17.02.10 17:09) [4]
    Спасибо. Теперь подменю работает.
 
Конференция "KOL" » ownerItem в главной строке меню работает, а в подменю нет
Есть новые Нет новых   [134431   +11][b:0][p:0.001]