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

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

Как установить ширину PopupMenu при OwnerDraw = True


L`Autour ©   (2008-08-04 07:38:00) 

Если вручную прорисовываю отдельные элементы меню, то ширина всего меню, определяется остальными элементами меню, иначе в качестве меню получаю узкую полоску.

И еще, если я делаю ручную прорисовку некоторых элементов меню своим шрифтом, то у остальных элементов при их первой прорисовке он сохраняется. Восстанавление шрифта на дефолтный происходит, только если над пунктом меню провести мышкой.


L`Autour   (2008-08-11 06:52:00) [1]

С памятью нормально - просто я забыл сказать, что шрифт свой шрифт создаю и уничтожаю при создании и удалении формы. А здесь его только к контексту цепляю.


MTsv DN   (2008-08-09 12:29:00) [2]

> DeleteObject(Font); - оказался лишним
Не думаю. Память надо беречь 8)


L`Aurtour   (2008-08-09 07:58:00) [3]

DeleteObject(Font); - оказался лишним


L`Autour   (2008-08-08 13:45:00) [4]

сенк


mdw   (2008-08-08 10:23:00) [5]


> по второму -  я пробовал просто удалять свой шрифт из DC-
> контектста меню (после моей обработки вывода),  но это не
> помагало.

А старый восстанавливали? Должно быть примерно так:

var Font, OldFont: HFONT;
....
     OldFont:= SelectObject(DC, Font);
.........
     SelectObject(DC, OldFont);
     DeleteObject(Font);


L`Autour   (2008-08-08 08:45:00) [6]

первое попробую

по второму -  я пробовал просто удалять свой шрифт из DC-контектста меню (после моей обработки вывода),  но это не помагало.


mdw   (2008-08-07 10:15:00) [7]

По поводу второго, нужно смотреть как рисуете. Возможно не восстанавливаете шрифт после отрисовки.


mdw   (2008-08-07 10:08:00) [8]

Если правильно понял вопрос, то Вам нужно обрабатывать OnMeasureItem, а там Result:= MAKELONG(H, W).


L`Autour   (2008-08-07 07:20:00) [9]

Все в отпусках?


Наверх

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