Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 21.03.2010, 21:14   #1
chandrasecar
Форумчанин
 
Аватар для chandrasecar
 
Регистрация: 03.10.2008
Сообщений: 180
Вопрос Попап меню блокируют передачу фокуса на др. компоненты...

Стандартные попап меню, когда вызываются, блокируют возможность передать фокус другому компоненту при наведении мыши. Можно ли от этого избавится? Задача в том, чтобы создать несколько кнопок и столько же попап. При на ведении мыши на каждую кнопку открывается свое попап меню. При открытом попап и наведении мыши на др. кнопку, должно открываться другое попап меню и т.д. Как такое сделать?
лучший подарок женщине-программисту
chandrasecar вне форума Ответить с цитированием
Старый 21.03.2010, 21:20   #2
notHaker
Форумчанин
 
Аватар для notHaker
 
Регистрация: 01.12.2009
Сообщений: 569
По умолчанию

в чём проблема? сообщения MouseMove в бутонах нормально работают, ток попапы к ним прикреплять не надо, а вызывать динамически.
Код - это работа, а работа стоит денег.

pz-game.ru. 2d зомби-сурвивал для олдфагов.
notHaker вне форума Ответить с цитированием
Старый 22.03.2010, 09:29   #3
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

У-у-у...
А бы PopUp'у такое не доверил...
Лучше сделать форму с ЛистБоксом, раскрасить его под меню, и вызывать немодально эту форму при наведении мышки на кнопки.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 22.03.2010, 12:55   #4
chandrasecar
Форумчанин
 
Аватар для chandrasecar
 
Регистрация: 03.10.2008
Сообщений: 180
По умолчанию

Не понимаю, как у вас работает. Вот на форме 3 кнопки и 3 ПопАп Меню. В обработчике события OnMouseMove каждой кнопки пишем PopupMenu1.Popup(X,Y), PopupMenu2.Popup(X,Y) и т.д. И что получается при компеляции: при наведение на кнопку вызывается попап, а при наведение на др. кнопки при открытом попап сообщение OnMouseMove кнопке не передается.

Вот и вопрос, как это обойти?
лучший подарок женщине-программисту
chandrasecar вне форума Ответить с цитированием
Старый 22.03.2010, 15:57   #5
mutabor
Телепат с дипломом
Старожил
 
Аватар для mutabor
 
Регистрация: 10.06.2007
Сообщений: 4,929
По умолчанию

Обойти можно читая Windows сообщения. Часто это помогает, а может и не помочь если отсутствие события вызвано отсутствием сообщения. Дело в том что попап это окно, может он на себя фокус забирает.
Тогда читать координаты курсора абсолютные и проверять или попадают на кнопку. С листбоксом тоже можно сделать, я так делал адресную строку выпадающую.
The future is not a tablet with a 9" screen no more than the future was a 9" black & white screen in a box. It’s the paradigm that survives. (Kroc Camen)
Проверь себя! Онлайн тестирование | Мой блог
mutabor вне форума Ответить с цитированием
Старый 22.03.2010, 19:34   #6
chandrasecar
Форумчанин
 
Аватар для chandrasecar
 
Регистрация: 03.10.2008
Сообщений: 180
По умолчанию

Да, я об этом уже задумался. План таков: ловить сообщения API поступающие при движении мыши и написать соответствующий обработчик... В принципе координаты и границы кнопки известны и можно написать в обработчике условия, при каких координатах и какую попап показывать. Думаю это должно сработать
лучший подарок женщине-программисту
chandrasecar вне форума Ответить с цитированием
Старый 22.03.2010, 22:55   #7
notHaker
Форумчанин
 
Аватар для notHaker
 
Регистрация: 01.12.2009
Сообщений: 569
По умолчанию

Если уж не ловится сообщение, то ловите сообщение глобального перемещения курсора...
Код - это работа, а работа стоит денег.

pz-game.ru. 2d зомби-сурвивал для олдфагов.
notHaker вне форума Ответить с цитированием
Старый 22.03.2010, 23:31   #8
chandrasecar
Форумчанин
 
Аватар для chandrasecar
 
Регистрация: 03.10.2008
Сообщений: 180
По умолчанию

API тоже не берет.... Отлавливаю сообщение WM_MOUSEMOVE. Все тоже что и со стандартным обработчиком. Одно попап открывается и остальные уже не могут... WM_MOUSEMOVE уже не работает.

Как еще можно обмануть этот попап?
лучший подарок женщине-программисту
chandrasecar вне форума Ответить с цитированием
Старый 23.03.2010, 19:35   #9
mutabor
Телепат с дипломом
Старожил
 
Аватар для mutabor
 
Регистрация: 10.06.2007
Сообщений: 4,929
По умолчанию

Цитата:
WM_MOUSEMOVE уже не работает.
Он то работает, но не посылается твоему окну. Ставить хук ради такой ерунды я думаю не стоит, проще листбоксы приделать вместо попапов придав им соотв. вид, а можно и хук установить глобальный на мышь.
The future is not a tablet with a 9" screen no more than the future was a 9" black & white screen in a box. It’s the paradigm that survives. (Kroc Camen)
Проверь себя! Онлайн тестирование | Мой блог
mutabor вне форума Ответить с цитированием
Старый 24.03.2010, 11:57   #10
chandrasecar
Форумчанин
 
Аватар для chandrasecar
 
Регистрация: 03.10.2008
Сообщений: 180
По умолчанию

Спасибо всем большое. Я решил оставить это дело. Сделал ПопАп из формы.
лучший подарок женщине-программисту
chandrasecar вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Перехват POST передачу данных Verst Общие вопросы Delphi 4 24.11.2009 15:34
Поясните передачу значений по указателям fs444 Общие вопросы C/C++ 6 30.10.2009 10:52
TreeView как сделать, чтобы попап-меню выпадало для определенных ветвей? KWN, lnc Помощь студентам 11 08.03.2009 01:01
TreeView как сделать, чтобы попап-меню выпадало для определенных ветвей? KWN, lnc Помощь студентам 4 03.03.2009 17:04
TTcpServer и TUdpSocket блокируют порт hawk1 Работа с сетью в Delphi 5 07.12.2006 23:29