Главная страница
    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.013 c
8-1129299763
Antonn
2005-10-14 18:22
2006.03.19
Алгоритм обработки изображения (серпия)


9-1126532168
Signate
2005-09-12 17:36
2006.03.19
Игровой цикл


10-1115290907
Santyago
2005-05-05 15:01
2006.03.19
Как в Excel документе можно определить конец файла


2-1141445077
anubis
2006-03-04 07:04
2006.03.19
Как заполнять таблицу програмным путём


2-1141048509
49 Cent
2006-02-27 16:55
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
Английский Французский Немецкий Итальянский Португальский Русский Испанский