СообЧа > База Знаний > Программирование > Delphi

Вопрос

Версия языка: 7

Подскажите как сделать так, чтобы иконка моей проги отображалась в трее?

Ответ

Там где нужно создать иконку — ставишь код из FormCreate, там где удалить — из FormDestroy. Для изменения иконки нужно:

pnid.hIcon присвоить новое значение иконки

вызвать Shell_NotifyIcon(NIM_MODIFY, Addr(pnid))

//----------------------------------------------------------

unit Unit1; interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, shellapi, ExtCtrls; type TForm1 = class(TForm) procedure FormCreate(Sender: TObject); procedure FormDestroy(Sender: TObject); end; const WM_NOTIFYTRAYICON = (WM_USER+1); // сообщения от иконки. // нужно только если будет обработка событий от иконки var Form1: TForm1; pnid: NOTIFYICONDATA; // указатель на структуру описывающую иконку implementation {$R *.DFM} procedure TForm1.FormCreate(Sender: TObject); begin pnid.cbSize := sizeof(NOTIFYICONDATA); // размер структуры pnid.Wnd := Form1.Handle; // HWND окна, которое будет обрабатывать сообщения от иконки pnid.uID := 0; // номер иконки pnid.uFlags := NIF_ICON + NIF_TIP; // иконка видна + у нее есть хинт pnid.hIcon := CopyIcon(Application.Icon.Handle); pnid.szTip := 'Пример иконки'; // хинт { pnid.uCallbackMessage := WM_NOTIFYTRAYICON; // сообщение которое будет посылать иконка, при действиях с ней // будет работать, если добавить NIF_MESSAGE в pnid.uFlags } Shell_NotifyIcon(NIM_ADD, Addr(pnid)); // добавляем иконку в трей end; procedure TForm1.FormDestroy(Sender: TObject); begin Shell_NotifyIcon(NIM_DELETE, Addr(pnid)); // убираем иконку их трея, //иначе будет там сидеть до тех пор, пока не проведешь мышью над треем end; end. //--------------------------------------------------------

Из конференции Expert_FAQ



Copyright © 2000-2004 Сообщество Чайников
Контактная информация