:: Visual Foxpro, Foxpro for DOS
снова о popup menu
krin

Сообщений: 192
Дата регистрации: 08.02.2005
собирался написать в прошлом году, и не собрался. соседняя тема подтолкнула доработать код и таки сообщить.
здесь не вопрос, а вариант решения к ранее обсуждавшейся теме.
есть объект, выглядящий как комбобокс, для множественного выбора из выпадающего списка. При нажатии под ним разворачивается меню
DEFINE POPUP, и отмечаем галками. Клик вне списка его закрывает.
И появилась форма, где этот список оказался длинным. Надо было к нему сделать POPUP SHORTCUT для быстрого выбора "почти всех" строк.
для этого подошло решение "Shortcut Menu Class" из архива news2news github.com
сделал его активацию на WM_RBUTTONUP, отдал пользователям.

у этого Win API меню был недостаток: оно отличалось от других меню.
в клубе когда-то обсуждалось меню Herman Tan'a, рисуемое API forum.foxclub.ru
сделал вариант меню "как в VFP".
тк я хотел всего лишь получить popup в стиле VFP, за исходную брал версию от 21.07.2005 www.levelextreme.com
потом добавил понравившуюся функциональность из последней ver 1.62.053 от 09.2008.

что здесь оригинального:
1) AppendMenu() заменена на InsertMenuItem()
2) вид, поведение меню как popup VFP - цвета, размер и положение строки/разделителя, неперескакивание disabled-строк при проходе
3) автор при выводе иконки берёт её цвет в точке (0,0) - левый верхний угол - и делает его прозрачным на всей иконке. Здесь по умолчанию цвет не меняется, можно это указать для конкретных иконок.
4) тк в VFP-меню при проходе по строкам подсвечивается только текстовая часть (за исключением disabled-строк, они полностью), то иконки рисуются только один раз.
ушло моргание disabled-иконок, тк они перерисовываются только при проходе по disabled-строке.
5) центрирование иконки по высоте строки меню

эти доработки действуют и на системное меню.
класс выводит меню в 3 вариантах:
- только ф-ей InsertMenuItem() - popup menu
- ф-ей + код Herman Tan с поправками 1), 3), 5) - popup, system menu
- ф-ей + код Herman Tan с поправками 1) - 5) "как в VFP" - popup, system menu

в архиве 3 примера:
example1_vars.scx варианты вывода API-меню (Ведьмак, там есть пример с иконками 32х32)
example2_bind.scx вызов API-меню по BindEvent()
example3_real.scx пример Popup API на Popup VFP

в архиве также версия 1.62.053 для интересующихся, в сети её не нашёл. Там в Readme_ODMenu.txt ограничения автора по использованию.
Ratings: 0 negative/1 positive
Re: снова о popup menu
Vedmak

Сообщений: 6086
Откуда: CiTY
Дата регистрации: 30.10.2003
Спасибо!


------------------
Говорить стоит лишь для тех, кто слушает.
Ratings: 0 negative/0 positive
Re: снова о popup menu
Каратаев
Автор

Сообщений: 4061
Откуда: Алматы
Дата регистрации: 04.12.2001
Интересно получилось...


------------------
Никогда не бывает настолько плохо, чтобы не могло быть еще хуже.
Ratings: 0 negative/0 positive


Извините, только зарегистрированные пользователи могут оставлять сообщения в этом форуме.

On-line: 29 (Гостей: 29)

© 2000-2025 Fox Club 
Яндекс.Метрика