powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / PowerBuilder [игнор отключен] [закрыт для гостей] / "расширенное" popup окно
14 сообщений из 14, страница 1 из 1
"расширенное" popup окно
    #37501794
DarknessSoul
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Доброго времени суток, коллеги.

Появилась необходимость создать свое собственное dropdown окно с различными функциями, опциями и т.д. Поискав решение, часто натыкался на совет создать свое собственное popup окно и вызывать его в соответствующих событиях, в зависимости от...
Этот вариант решения устроил бы меня полнустью, но не могу решить одну проблему:
Как открыть popup именно под курсором мыши? Popup окно не является в полной мере дочерним для MDI, поэтому определять его положение функциями PointerX и PointerY не корректно, т.к. они определяют координаты относительно рабочей зоны окна, а мне, судя по всему, необходимы координаты относительно монитора.
Решением является подключение API и использование GetCursorPos, но хотелось бы уточнить, м.б. есть более изящные способы реализации собственного DropDownWindow? Подскажите, плз, может кто-нибудь решал схожие задачи...


И еще вопрос вне темы, вдогонку, т.к. не критичен для процесса. :D
Можно ли добавлять в Structure новые элементы в ходе работы программы, на лету, по аналогии с объявлением новых переменных? И/Или как это можно реализовать?

Заранее благодарю!
...
Рейтинг: 0 / 0
"расширенное" popup окно
    #37502480
Фотография spas2001
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PointerX и PointerY можно использовать, только надо учитывать смещение относительно меню и тулбара, нормально работает
Код сейчас не помню где конкретно, давно делал, но попадание есть:)
...
Рейтинг: 0 / 0
"расширенное" popup окно
    #37502564
andy753
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
spas2001,

Только в случае стандартных размеров тулбара и шрифтов. в PB от 8 до 10.5 версий при выборе крупной схемы или шрифта побольше - идут смещения.

Стандартные контролы не совсем корректные свои размеры дают. Приходится использовать либо API либо танцы с бубнами.
...
Рейтинг: 0 / 0
"расширенное" popup окно
    #37502956
Фотография spas2001
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
С крупным шрифтом всегда проблемы и танцы с бубнами:)
...
Рейтинг: 0 / 0
"расширенное" popup окно
    #37503192
AIS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andy753 ,
для определения размеров меню, бортов окна (в состоянии норм. и макс.) и т.п., ипользуйте функцию:
Код: plaintext
FUNCTION int GetSystemMetrics (int nIndex) LIBRARY "user32.dll"
и не надо будет плясать с бубном. ;)
А ещё обратите внимание, что внутри и за пределами MDI-окна разные единицы измерения, поэтому используйте для этого соответствующие функции РВ.
...
Рейтинг: 0 / 0
"расширенное" popup окно
    #37503452
Фотография Филипп
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DarknessSoulДоброго времени суток, коллеги.

Появилась необходимость создать свое собственное dropdown окно с различными функциями, опциями и т.д. Поискав решение, часто натыкался на совет создать свое собственное popup окно и вызывать его в соответствующих событиях, в зависимости от...
Этот вариант решения устроил бы меня полнустью, но не могу решить одну проблему:
Как открыть popup именно под курсором мыши? ........
Заранее благодарю!
... вызывать его в соответствующих событиях ИЛИ под курсором мыши ? Вы о событиях вызванных матипуляциями мышью?
Так или иначе, надо понимать, что есть некий контекст в котором вы хотите показывать это окно, и скорее всего этот "контекст" редактируемый. Если это так, то идея проста:
1) Определить кто в фокусе (с точки зрения Windows) - то бишь его handle
2) GetWindowRect этого handle (это даст точные координаты места где нужно открыть ваше окно)
3) Сделать поправку на рабочую поверхность (с помошью SystemParametersInfo)
...
Рейтинг: 0 / 0
"расширенное" popup окно
    #37503570
AIS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Филипп ,
что-то это о-очень сложновато. ;)
Достаточно просто определить месторасположение (например, по Х вектору) внутри рабочей области MDI, + скорректировать толщину по Х бордюр (взависимости от статуса окна) и добавить значение положение Х от MDI-окна. И скорректировать (читай - сконвертировать) только ширину "бордюра" и положение Х MDI-окна через упомянутую выше функцию, а остальное всё доступно в формате РВ.

P.S. ...конечно при условии, что надо открыть окно как НЕ дочернее от MDI.
...
Рейтинг: 0 / 0
"расширенное" popup окно
    #37503581
Фотография Филипп
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AIS Филипп ,
что-то это о-очень сложновато. ;)
Это на самом деле просто и точно. А "в формате РВ" в конце концов хрень получается. Но different strokes for different folks , так что :-)))
...
Рейтинг: 0 / 0
"расширенное" popup окно
    #37504441
Локшин Марк
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Филипп,

Не получится только с использованием Windows API сделать. Человек хочет дропдаун открывать, значит ему нужно учитывать высоты header'ов в DataWindow (в т.ч. групп), сколько строк на экране видно и прочее. У нас есть мегаадский код, который вроде бы такое неплохо делает.
...
Рейтинг: 0 / 0
"расширенное" popup окно
    #37506079
Фотография Филипп
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
То, что я предложил, реализовано для открытия самопального календаря в DataWindow, именно так, как я описал, и без каких бы то ни было вычислений высот рядов, хедеров, и т.п. белиберды...
...
Рейтинг: 0 / 0
"расширенное" popup окно
    #37506418
Локшин Марк
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ФилиппТо, что я предложил, реализовано для открытия самопального календаря в DataWindow, именно так, как я описал, и без каких бы то ни было вычислений высот рядов, хедеров, и т.п. белиберды...
т.е. того контрола, который держит PB для редактирования текущего поля?
...
Рейтинг: 0 / 0
"расширенное" popup окно
    #37507698
Фотография Филипп
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Локшин МаркФилиппТо, что я предложил, реализовано для открытия самопального календаря в DataWindow, именно так, как я описал, и без каких бы то ни было вычислений высот рядов, хедеров, и т.п. белиберды...
т.е. того контрола, который держит PB для редактирования текущего поля?
Да
...
Рейтинг: 0 / 0
"расширенное" popup окно
    #37508379
AIS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ФилиппЛокшин Маркпропущено...

т.е. того контрола, который держит PB для редактирования текущего поля?
Да
У Вас привязка к кординатам курсора. А так как на рисунке, тоже можно?
...
Рейтинг: 0 / 0
"расширенное" popup окно
    #37509460
Фотография Филипп
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AISФилипппропущено...

Да
У Вас привязка к кординатам курсора. А так как на рисунке, тоже можно?
Если вопрос был ко мне, то у меня (в обсуждаемом исполнении) НЕТ привязки к координатам курсора.
А вот на картинке, которую вы прилепили, написано что-то про Tooltip. Вот Tooltips должны быть привязаны к мышке, если скачать моё исполнение Datawindow Tooltips с Sybase CodeExchange, то там так :-)
...
Рейтинг: 0 / 0
14 сообщений из 14, страница 1 из 1
Форумы / PowerBuilder [игнор отключен] [закрыт для гостей] / "расширенное" popup окно
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]