Форум: "Начинающим";
Текущий архив: 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