Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Общие вопросы > PopupMenu Без формы


Автор: Shurup 15.4.2007, 19:54
Здраствуйе!

Столкнулся с такой задачей...

Нужно написать программу, при запуске которой под курсором показывается PopUp-меню.
Форм никаких видно быть не должно.
После выбора пункта - выполняется некий код, после чего программа должна закрыться.

с данной частью проблем нету:
На форме размещаю TPopupMenu и при загрузке формы делаю PopupMenu1.Popup(p.X,p.y);
где P - координаты курсора.

Хочется реализовать следующее:
Если не выбран ни один пункт меню, а просто фокус передан другому окну - то хотелось бы, чтоб этот попап прятался, а программа закрывалась.
Однако этот попап - отображается, как модальный и висит поверх всех окон, пока не выбирешь какой-то из итемов...

Что можете посоветовать в данном случае. Спаибо заранее.. smile 

Автор: Snowy 15.4.2007, 20:01
Перед Popup сделай
Код

  SetForegroundWindow(Form1.Handle);

Автор: Shurup 15.4.2007, 20:13
Цитата(Snowy @ 15.4.2007,  20:01)
Перед Popup сделай
Код

  SetForegroundWindow(Form1.Handle);

Немного не то.... Другими словами мне наоборот нужно, чтоб форма закрывалась, когда она теряет фокус...

Хотя возможно я не понял...

Автор: Snowy 15.4.2007, 22:35
Если к ней привязано меню, то закрывать нельзя - менюшка работать не будет.
Закрывать на потерю фокуса можно только в том случае, если меню было показано.
Но перед показом меню, нужно дать фокус этой форме.
Если ей не дать фокус, то попупка будет висеть, пока фокус не будет потерян.
А, чтоб он был потерян, он сначала должен быть получен.
Поэтому и нужна эта строчка - установить фокус на своё окно.
После этого показываем попупку. Вот теперь форма может потерять фокус и меню нормально закроется.
И сразу примечание: при получении фокуса, окно вполне может быть скрыто.

Автор: Shurup 16.4.2007, 11:11
Немного пришлось изменить структуру и с этой строчкой действительно заработало...
Спасибо.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)