![]() |
|
Модераторы: Poseidon, Snowy, bems, MetalFan |
![]()
|
|
| Alex |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 4147 Регистрация: 25.3.2002 Где: Москва Репутация: 80 Всего: 162 |
Да не поправка на шрифт должна быть и в стандартном компоненте, т.к. у пользователя может стоять крупный шрифт или вообще другой шрифт для интерфейса. -------------------- Написать можно все - главное четко представлять, что ты хочешь получить в конце. |
|||
|
||||
| Pakshin A. S. |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 5056 Регистрация: 16.2.2003 Репутация: 21 Всего: 61 |
А вот это не учел...
|
|||
|
||||
| x77 |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1255 Регистрация: 25.3.2002 Репутация: 19 Всего: 22 |
а если так:
есс-но, у поп-апа OwnerDraw = TRUE и AutoPopup = FALSE. в принципе, работает. можно наверное и ещё подогнать, если учитывать GetSystemMetrics (SM_CYEDGE, SM_CYBORDER и им подобные), но это я уже не пробовал. Добавлено @ 16:07 кстати о GetSystemMetrics. если заведомо известно, что пункты меню рисуются стандартным шрифтом винды (пофигу, какого он там размера), то высоту менюшки можно получить как GetSystemMetrics (SM_CYMENU) * PopupMenu1.Items.Count -------------------- Я никогда не сопротивлялся искушению, поскольку узнал: что мне не нравится, то меня не искушает. © Джордж Бернард Шоу (Ирландия) |
|||
|
||||
| Girder |
|
|||
![]() Лентяй 2 ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1993 Регистрация: 12.5.2004 Репутация: 31 Всего: 155 |
Через Timer замутил...
PS: Не зависит от стиля пункта меню, его шрифтов и картинок в меню... не учитывается только отступ Это сообщение отредактировал(а) Girder - 12.10.2004, 22:00 -------------------- Как слышим, так и пишим. Истина где-то там... |
|||
|
||||
| x77 |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1255 Регистрация: 25.3.2002 Репутация: 19 Всего: 22 |
круто
только не совсем понятно, зачем вообще здесь таймер? Добавлено @ 18:42 у меня после всех мучений получилось так:
работает, если все пункты выводятся одинаковым шрифтом. а если рисовать вручную, да разными шрифтами - то и просчитывать придётся вручную, но это тоже довольно легко. -------------------- Я никогда не сопротивлялся искушению, поскольку узнал: что мне не нравится, то меня не искушает. © Джордж Бернард Шоу (Ирландия) |
|||
|
||||
| deMike |
|
|||
![]() M.Shinoda ![]() ![]() Профиль Группа: Участник Сообщений: 361 Регистрация: 12.10.2004 Где: Санкт-Петербург Репутация: нет Всего: 0 |
Согласен! А если 100 пунктов или 1000! |
|||
|
||||
| Girder |
|
||||
![]() Лентяй 2 ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1993 Регистрация: 12.5.2004 Репутация: 31 Всего: 155 |
Можно и так... (При этом не забыв повесить на OnPopup обработчик PopupMenu1Popup):
Это сообщение отредактировал(а) Girder - 13.10.2004, 11:10 -------------------- Как слышим, так и пишим. Истина где-то там... |
||||
|
|||||
| x77 |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1255 Регистрация: 25.3.2002 Репутация: 19 Всего: 22 |
речь идёт о высоте меню, или я чего не понимаю? высота одного пункта меню, нарисованного стандартным шрифтом, храниться в ресстре. умножьте её на кол-во пунктов - и получите полную высоту меню - N пикселов на бордюр. N, опять таки, храниться в ресстре.
объясните мне, ущербному, зачем все эти извраты? -------------------- Я никогда не сопротивлялся искушению, поскольку узнал: что мне не нравится, то меня не искушает. © Джордж Бернард Шоу (Ирландия) |
|||
|
||||
| Girder |
|
|||
![]() Лентяй 2 ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1993 Регистрация: 12.5.2004 Репутация: 31 Всего: 155 |
А если ручками
Тем более сегодня высота... завтра и ширина понадобится... а тут уже и картинки и все такое... -------------------- Как слышим, так и пишим. Истина где-то там... |
|||
|
||||
| x77 |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1255 Регистрация: 25.3.2002 Репутация: 19 Всего: 22 |
Girder, да и бог с ним. создаём виртуальную канву, назначаем ей нужные для итема свойства, в цикле измеряем все итемы, и получаем высоту. почти то же самое я делал в OnMeasureItem - просто замерял высоту шрифта для каждого пункта, которая может быть разной. но там будет проблема - при первом запуске MenuHeight равно нулю. т.е. проще перед вызовом Popup в какой-то функии отрисовать меню на виртуальной канве и получить таким образом его высоту.
-------------------- Я никогда не сопротивлялся искушению, поскольку узнал: что мне не нравится, то меня не искушает. © Джордж Бернард Шоу (Ирландия) |
|||
|
||||
![]()
|
| Правила форума "Delphi: Общие вопросы" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Delphi: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |