Главная » Статьи » Программирование в Delphi |
Создать, изменить и удалить TrayIcon
В программах для Window 95 и выше часто используется TrayIcon – иконка справа на TaskBar, которая позволяет программе почти не занимать места на экране и при этом быть всегда доступной. Для работы с TrayIcon используется функция Shell_NotifyIcon, в которую передается команда: NIM_ADD, NIM_MODIFY или NIM_DELETE для создания изменения и удаления соответственно, и структура TNotifyIconData. У каждой TrayIcon в вашем приложении должен быть свой uID. Code const WM_NOTIFYTRAYICON = WM_USER + 1; ... private procedure WMTRAYICONNOTIFY(var Msg: TMessage); message WM_NOTIFYTRAYICON; ... uses ShellAPI; procedure TForm1.WMTRAYICONNOTIFY(var Msg: TMessage); var s: String; begin case Msg.LParam of WM_MOUSEMOVE: s := 'Мышь сдвинута'; WM_LBUTTONDOWN: s := 'Левая кнопка нажата'; WM_LBUTTONUP: s := 'Левая кнопка отпущена'; WM_LBUTTONDBLCLK: s := 'Два раза нажата левая кнопка'; WM_RBUTTONDOWN: s := 'Правая кнопка нажата'; WM_RBUTTONUP: s := 'Правая кнопка отпущена'; WM_RBUTTONDBLCLK: s := 'Два раза нажата правая кнопка'; else s := IntToStr(Msg.LParam); end; ListBox1.Items.Add(s); ListBox1.ItemIndex := ListBox1.Items.Count - 1; end; procedure TForm1.FormCreate(Sender: TObject); var tray: TNotifyIconData; Ic: TIcon; begin Ic := TIcon.Create; Ic.LoadFromFile('Icon1.ico'); with tray do begin cbSize := SizeOf(TNotifyIconData); Wnd := Form1.Handle; uID := 1; uFlags := NIF_ICON or NIF_MESSAGE or NIF_TIP; uCallBackMessage := WM_NOTIFYTRAYICON; hIcon := Ic.Handle; szTip := ('Это наша иконка'); end; Shell_NotifyIcon(NIM_ADD, Addr(tray)); Ic.Destroy; end; procedure TForm1.Button1Click(Sender: TObject); var tray: TNotifyIconData; Ic: TIcon; begin Ic := TIcon.Create; Ic.LoadFromFile('Icon2.ico'); with tray do begin cbSize := SizeOf(TNotifyIconData); Wnd := Form1.Handle; uID := 1; uFlags := NIF_ICON or NIF_MESSAGE or NIF_TIP; uCallBackMessage := WM_NOTIFYTRAYICON; hIcon := Ic.Handle; szTip := ('Это другая иконка'); end; Shell_NotifyIcon(NIM_MODIFY, Addr(tray)); Ic.Destroy; end; procedure TForm1.FormDestroy(Sender: TObject); var tray: TNotifyIconData; begin with tray do begin cbSize := SizeOf(TNotifyIconData); Wnd := Form1.Handle; uID := 1; end; Shell_NotifyIcon(NIM_DELETE, Addr(tray)); end; Источник: http://delphi4all.narod.ru/how/tray.htm | |
Просмотров: 1323 | Рейтинг: 0.0/0 |
Всего комментариев: 0 | |