Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.03.19;
Скачать: CL | DM;

Вниз

Вопрос по System tray.После выхода из программы ярлык не исчезает   Найти похожие ветки 

 
Michael5   (2006-02-27 21:14) [0]

Программа добавляет свой ярлык в трей. После закрытия ярлык остается в трее, и исчезает только после наведения на него мышью. Пробовал обновлять рабочий стол в процедуре FormDestroy - не помогает.
Подскажите пожалуйста, как от этого бага избавиться?!

И еще, если это несложно: картинка иконки в трее по умолчанию (стандартная, дельфи). А как добавить свою?

...Взял чей-то готовый компонент, TrayIcon (устанавливает вкладку "MyComp", [TTrayIcon]), но не понял, как он работает, а то бы тут глупых вопросов не задавал бы...

на всякий случай код добавления в трей:
procedure TForm1.WMTRAYICONNOTIFY(var Msg: TMessage);
begin
{обрабатываем события на иконке в трее}
  case Msg.LParam of
     WM_LBUTTONDOWN: Form1.Visible := true;
  end;
end;

procedure TForm1.FormDestroy(Sender: TObject);
begin
  try
     with tray do begin
        cbSize := SizeOf(TNotifyIconData);
        Wnd := Form1.Handle;
        uID := 1;
     end;
     Shell_NotifyIcon(NIM_DELETE, Addr(tray));
  finally
     Application.Terminate;
  end;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  TrayIcon := Application.Icon;
  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 := TrayIcon.Handle;
     szTip := ("Это мое приложение в трее");
  end;
  Shell_NotifyIcon(NIM_ADD, Addr(tray));
end;

procedure TForm1.GoToTrayButtonClick(Sender: TObject);
begin
  Close;
end;

procedure TForm1.ControlWindow(var Msg: TMessage);
begin
  if ((Msg.WParam = SC_MINIMIZE) or (Msg.WParam = 61536)) then //61536 - при нажатии на крестик
  begin
     Form1.Visible := false;
  end
  else
     inherited;
end;


 
Гаврила ©   (2006-02-27 23:01) [1]


>procedure TForm1.FormDestroy(Sender: TObject);
>begin
>  try
>     with tray do begin
>        cbSize := SizeOf(TNotifyIconData);
>        Wnd := Form1.Handle;
>        uID := 1;
>     end;
>     Shell_NotifyIcon(NIM_DELETE, Addr(tray));
>  finally
>     Application.Terminate;
>  end;
> end;


По моему, ой

> картинка иконки в трее по умолчанию (стандартная,
> дельфи).

По умолчанию, иконка от твоего Application(.Icon)


 
Michael5   (2006-02-28 19:59) [2]

Гаврила, спасибо, где искать иконку, понял, и с треем тоже осенило:
На самом деле событие TForm1.FormDestroy при закрытии формы не наступает, а наступает TForm1.OnClose, туда помещаю код, и все работает :)



Страницы: 1 вся ветка

Текущий архив: 2006.03.19;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.035 c
2-1141133176
sanich
2006-02-28 16:26
2006.03.19
Поставить курсор в таблице на определенное поле


15-1139691112
Anatoly Podgoretsky
2006-02-11 23:51
2006.03.19
Глубины Инди


6-1130160110
Shurshik
2005-10-24 17:21
2006.03.19
Эксперту по FTP: сжатие на лету в FTP


4-1135680531
Ньюб2
2005-12-27 13:48
2006.03.19
выключить+включить устройство


15-1128596340
Cherrex
2005-10-06 14:59
2006.03.19
VS против Delphi