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

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


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

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

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

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

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

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

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

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

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


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