Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Разное
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 02.02.2008, 15:21
Аватар для NCD
NCD NCD вне форума
Новичок
 
Регистрация: 31.12.2007
Адрес: РОССИЯ
Сообщения: 53
Репутация: 10
Печаль О трее

Доброго времени суток!
Помогите пожалуйста разобраться с иконкой на TrayBar'е.
Я нашёл вот это :
Код:
procedure TForm1.Button3Click(Sender: TObject);
var
  no: TNotifyIconData;
  Hicon1: HIcon;
begin
  //Помещение иконки в Tray Bar
  HIcon1:=ExtractIcon(Handle,'NsS.ico',0);
  with no do
  begin
    cbSize:=Sizeof(TNotifyIconData);
    Wnd:=Handle;
    uID:=0;
    UFlags:=NIF_MESSAGE+NIF_ICON+NIF_TIP;
    SzTip:='NsS';
    HIcon:=HIcon1;
    //Определяемое пользователем сообщение
    uCallBackMessage:=WM_USER+0;
  end;
  Shell_NotifyIcon(NIM_ADD,@no);
end;

Всё работает, иконка появляется, но я не могу понять, как добавить какое-то действие или контекстное меню к иконке. Подскажите, если кто знает
Если существуют способы лучше, чем у меня, напишите...
Заранее спасибо!
Ответить с цитированием
  #2  
Старый 02.02.2008, 18:10
Rosenkrantz Rosenkrantz вне форума
Активный
 
Регистрация: 04.12.2007
Адрес: Москва
Сообщения: 234
Версия Delphi: Delphi 7
Репутация: 40
По умолчанию

Shell_NotifyIcon принимает два параметра: dwMessage - идентификация действия, которое надлежит выполнить (NIM_ADD - добавить иконку в трей, NIM_DELETE - удалить, NIM_MODIFY - изменить) и указатель на запись типа TNotifyIconData. Эта запись выглядит так (описана в ShellAPI):
Код:
  TNotifyIconDataA = _NOTIFYICONDATAA;
  TNotifyIconData = TNotifyIconDataA;
  _NOTIFYICONDATAA = record
    { размер записи }
    cbSize: DWORD; 

    { идентификатор окна, которое будет получать 
      сообщения о нажатиях и перемещениях мыши на иконке в трее
    Wnd: HWND;

    { номер пиктограммы. Если вы размещаете только одну иконку - указываете 0 }
    uID: UINT;

    { флаги (NIF_ICON, NIF_MESSAGE, NIF_TIP) } 
    uFlags: UINT;

    { сообщение, которое посылается окну при 
       попадании мыши на иконку в трее }
    uCallbackMessage: UINT;

    { Хэндл иконки }
    hIcon: HICON; 

    { текст всплывающей подсказки } 
    szTip: array [0..63] of AnsiChar;
  end;
Размещаете иконку в трей, как сделано у вас в примере, у окна приложения определяете функцию, которая будет слушать сообщения от иконки. В этом сообщении wParam - номер пиктограммы (если она одна, то ноль), в поле lParam - информация о том, что там случилось с иконкой (какую кнопку мыши нажали) - константа типа WM_* (можно посмотреть в файле Messages.pas). По окончании работы приложения убираете иконку из трея. Вроде все.
Ответить с цитированием
  #3  
Старый 03.02.2008, 13:19
Аватар для NCD
NCD NCD вне форума
Новичок
 
Регистрация: 31.12.2007
Адрес: РОССИЯ
Сообщения: 53
Репутация: 10
По умолчанию

А не могли бы Вы написать пример?, потому что с моим уровнем познаний в этой области понять принцип работы достаночно тяжело, а с примером "на руках" я разберусь гораздо быстрее...
Ответить с цитированием
  #4  
Старый 03.02.2008, 17:04
Rosenkrantz Rosenkrantz вне форума
Активный
 
Регистрация: 04.12.2007
Адрес: Москва
Сообщения: 234
Версия Delphi: Delphi 7
Репутация: 40
По умолчанию

Вот вам пример на скорую руку. Приложение при минимизации "прячется" в трей и реагирует на мышку: двойной клик левой кнопкой - восстановление, одинарный правой - отображение контекстного меню.

Чтобы не переусложнять текст, я не стал тут приводить действия для смены иконки, если нужно - спрашивайте, я объясню отдельно. Ничего сложного тут нет, на самом деле.
Вложения
Тип файла: zip SysTrayProjectD7.zip (3.7 Кбайт, 100 просмотров)
Ответить с цитированием
  #5  
Старый 03.02.2008, 20:40
DrFelix DrFelix вне форума
Прохожий
 
Регистрация: 03.02.2008
Сообщения: 1
Репутация: 10
По умолчанию

Спасибо, и мне очень пригодилось
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 01:40.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter