Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2006.03.19;
Скачать: [xml.tar.bz2];

Вниз

Вопрос по 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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.45 MB
Время: 0.02 c
1-1139856622
Дубинка
2006-02-13 21:50
2006.03.19
Эмуляция клика


3-1138254928
syte_ser78
2006-01-26 08:55
2006.03.19
аналог экселевской группировки


15-1140931551
Frozzen
2006-02-26 08:25
2006.03.19
Вопрос про VBA и Word


6-1134102665
Kolyan
2005-12-09 07:31
2006.03.19
Outlook Express


2-1141194386
StelS
2006-03-01 09:26
2006.03.19
Справка





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский