Главная страница
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.032 c
1-1139816713
BanderLog
2006-02-13 10:45
2006.03.19
Отображение длительных процессов


3-1138173453
flad
2006-01-25 10:17
2006.03.19
Oracle-TOAD, Interbase- что?


3-1138471115
einstein
2006-01-28 20:58
2006.03.19
Преобразование значения ячейки (PAnsiChar в String)


11-1121939979
shalex
2005-07-21 13:59
2006.03.19
MHXPStyle


6-1133890540
Max Ivanych
2005-12-06 20:35
2006.03.19
Возможно ли определить активность сайта по URL?