Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: Как связать TrayIcon1, ImageList1, popupMenu1 чтоб меню появлялось на иконке  (Прочитано 13007 раз)
0 Пользователей и 1 Гость смотрят эту тему.
rumpelstilzchen
Тролль
*
ru
Offline Offline

« : 28-02-2008 18:50 » new

Подскажите, пожалуйста, как сделать, чтобы меню появлялось на иконке в трее, при щелчке правой кнопкой на иконке, появлялось менюшка с пунктами, щелкнув на которые, можно было управлять программой.
Записан
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #1 : 28-02-2008 18:54 » 

rumpelstilschen, когда создаёшь иконку в трее, задаёшь событие, которое пришлёт щелчок по инконке. По этому событию и вываливай меню.

пример (правда, писано в VC++6, а не в борланде, но поможет, думаю)
https://forum.shelek.ru/index.php/topic,11802.0.html
ищи строку
"Q:как создать иконку в области уведомлений (трее)?"
Записан

rumpelstilzchen
Тролль
*
ru
Offline Offline

« Ответ #2 : 28-02-2008 19:19 » 

Алексей1153++, иконку мне удалось засунуть в трей. Но сколько я по ней не кликаю (L_M), единственно что происходит, это появление окна, если оно было свернуто.
Как правой кнопкой мыши вызвать появление меню?

Ссылку посмотрел и не понял.
Записан
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #3 : 28-02-2008 19:27 » 

rumpelstilschen, рассказывай, что именно не понятно

там, при создании иконки, в структуре NOTIFYICONDATA (поле uCallbackMessage) указывается значение WM_COMMAND.
Именно оно будет посылаться окну-родителю иконки (NOTIFYICONDATA::hWnd). Ловишь это сообщение и смотришь, что именно делали с иконкой мышью:
см. обработчик BOOL CMainFrame::OnCommand(WPARAM wParam, LPARAM lParam)
(как он выглядит в борланде - не ведаю... )

если не разберёшься - говори, где споткнулся Улыбаюсь
Записан

rumpelstilzchen
Тролль
*
ru
Offline Offline

« Ответ #4 : 28-02-2008 19:38 » 

>говори, где споткнулся

нужно наладить взаимосвязь в object inspector между TrayIcon1, ImageList1, PopupMenu1.
Дополнително нужно создать для PopumMenu1, на вкладке Items, пункты меню, которые будут отображаться при щелчке на иконке (я это уже сделал).
Не понимаю как сделать то что мне нужно. Смотрел у Архангельсого, там написано, что "компоненты на вкладке Samples я вляются наименее документированными" и все. У меня есть старый проект с этим же, но при линковке он просит файл in.bpi, где его брать не знаю. Вот и делаю с самого начала.
Записан
RXL
Технический
Администратор

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #5 : 28-02-2008 19:44 » 

Пример на Delphi для работы с треем:
http://www.delphisources.ru/pages/faq/base/create_modify_delete_trayicon.html

Вот про TrayIcon:
http://itby.ru/content/view/831/40/

Поиском работать надо.
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
rumpelstilzchen
Тролль
*
ru
Offline Offline

« Ответ #6 : 28-02-2008 19:51 » 

RXL, посмотрел. У меня ничего не надо писать, нужно только отобразить PopupMenu1 в тот момент, когда происходит щелчок на иконке, это делается в Properties или в Events (взаимосвязь методов между объектами).
Записан
RXL
Технический
Администратор

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #7 : 28-02-2008 20:38 » 

Смотри в хелпе TPopupMenu. Все очень просто. Если компонент имеет соответствующее свойство с типом TPopupmenu*, то просто присвой ему указатель на свое меню. Если такого свойства нет - отрабатывай событие нажатия правой кнопки и покажи меню. Не забудь его спозиционировать правильно.
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
rumpelstilzchen
Тролль
*
ru
Offline Offline

« Ответ #8 : 29-02-2008 08:13 » 

неполучается.
Записан
rumpelstilzchen
Тролль
*
ru
Offline Offline

« Ответ #9 : 29-02-2008 10:26 » 

у меня компилятор требует OpenGLPanel_DP, без этого не хочет работать
Записан
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines