49306956


Как поместить иконку в трей ? (опять)
Автор Сообщение
jkeks Не на форуме
Постоялец
***

Сообщений: 155
Зарегистрирован: 02.2010
Сообщение: #1
Как поместить иконку в трей ? (опять)
Вот надо мне тут одну программку сделать так чтобы она была в трее и по таймеру балоны вывозила.
Как без компонентов посадить прогу в трей ?
Вопрос задавался 1000 раз и ответов полно, но в том же DW все написано крайне неясно, хотелось бы по шагам увидеть что и куда прописать и зачем.

Спасибо.
09.02.2010 12:19
Вебсайт Найти все сообщения Цитировать это сообщение
all__ Не на форуме
Админ
*******

Сообщений: 874
Зарегистрирован: 01.2010
Сообщение: #2
RE: Как поместить иконку в трей ? (опять)
Сейчас набросал небольшой класс, для добавления иконки к проекту, некоторые моменты написаны грубо, но всё работает и недостающие ф-и можно потом добавить.

Функционал:
  • добавляет иконку в трей
  • удаляет иконку из трея
  • Клик LBM скрывает и показывает окно и кнопку в TaskBar`е
  • Клик RBM показывает TPopupMenu созданый в основной программе

Код:
// модуль класса uSimpleTray.pas
// имя класса TSimpleTray

// добавление иконки в трей
systray:=TSimpleTray.Create(Handle,Application.Handle,PopupMenu1);

// удаление иконки
  systray.Free;

Пример, рабочего приложения прикреплен к посту.


Прикрепления
.zip  systray.zip (Размер: 8.5 Кб / Загрузок: 330)

Лучшая благодарность - "Мне нравится", +1 или Like! Вверху страницы.
(Последний раз сообщение было отредактировано 09.02.2010 в 17:53, отредактировал пользователь all__.)
09.02.2010 17:25
Вебсайт Найти все сообщения Цитировать это сообщение
jkeks Не на форуме
Постоялец
***

Сообщений: 155
Зарегистрирован: 02.2010
Сообщение: #3
RE: Как поместить иконку в трей ? (опять)
попробую завтра
09.02.2010 17:51
Вебсайт Найти все сообщения Цитировать это сообщение
jkeks Не на форуме
Постоялец
***

Сообщений: 155
Зарегистрирован: 02.2010
Сообщение: #4
RE: Как поместить иконку в трей ? (опять)
Ну добавил я в проект этот pas, надо этот гребаный systray где-то как-то определить ? Где ? как ?
Написал в type: systray: TSystray
Delphi мне ее стирает с руганью

Строка systray:=TSimpleTray.Create(Handle,Application.Handle,PopupMenu1);
systray - не поределен
10.02.2010 8:47
Вебсайт Найти все сообщения Цитировать это сообщение
all__ Не на форуме
Админ
*******

Сообщений: 874
Зарегистрирован: 01.2010
Сообщение: #5
RE: Как поместить иконку в трей ? (опять)
В прикреплении рабочий проект, проверь там. Скорее всего ты определяешь его где-то локально, и вызываешь из функции, которая не видит этого определения.

Лучшая благодарность - "Мне нравится", +1 или Like! Вверху страницы.
10.02.2010 15:22
Вебсайт Найти все сообщения Цитировать это сообщение
jkeks Не на форуме
Постоялец
***

Сообщений: 155
Зарегистрирован: 02.2010
Сообщение: #6
RE: Как поместить иконку в трей ? (опять)
нет ничего лучше консультации по телефону
10.02.2010 16:00
Вебсайт Найти все сообщения Цитировать это сообщение
all__ Не на форуме
Админ
*******

Сообщений: 874
Зарегистрирован: 01.2010
Сообщение: #7
RE: Как поместить иконку в трей ? (опять)
А полезней логи сюда, потому что из года в год возвращаемся к одним и тем же вопросам.

Лучшая благодарность - "Мне нравится", +1 или Like! Вверху страницы.
10.02.2010 16:08
Вебсайт Найти все сообщения Цитировать это сообщение
jkeks Не на форуме
Постоялец
***

Сообщений: 155
Зарегистрирован: 02.2010
Сообщение: #8
RE: Как поместить иконку в трей ? (опять)
Да вот просто лень писать статью уже. Так-то кшна надо было хотя бы разговор записать и в подкаст.
11.02.2010 7:09
Вебсайт Найти все сообщения Цитировать это сообщение
Гость
Unregistered

 
Сообщение: #9
RE: Как поместить иконку в трей ? (опять)
all__ спасибо тебе большое за твой пример!!
Не получалось отловить события от иконки в своем класс!
Функцию, которую ты использовал очень помогла AllocateHWnd
18.05.2010 11:07
Цитировать это сообщение
all__ Не на форуме
Админ
*******

Сообщений: 874
Зарегистрирован: 01.2010
Сообщение: #10
RE: Как поместить иконку в трей ? (опять)
Рад помочь. ;-)

Лучшая благодарность - "Мне нравится", +1 или Like! Вверху страницы.
18.05.2010 14:18
Вебсайт Найти все сообщения Цитировать это сообщение
all__ Не на форуме
Админ
*******

Сообщений: 874
Зарегистрирован: 01.2010
Сообщение: #11
RE: Как поместить иконку в трей ? (опять)
В процессе работы с компонентом обнаружил несколько проблем, вот решение первой:
Скрыть PopUp при потере фокуса

Вторая проблема связана с тем, что приложение не дает Windows XP отключиться.

Лечится добавлением в класс обработчика события WM_QUIT:
Код:
procedure TSimpleTray.SysTrayIconMsgHandler(var Msg: TMessage);
var pt:TPoint;
begin
  case Msg.lParam of
    WM_MOUSEMOVE:;
    WM_LBUTTONDOWN: begin
        ShellExecute(appHANDLE,'',pchar(ExtractFilePath(Application.ExeName) + 'ScreenSender.exe'),'','',0);
      end;
    WM_LBUTTONUP:;
    WM_LBUTTONDBLCLK:;
    WM_RBUTTONDOWN:;
    WM_RBUTTONUP: begin
      GetCursorPos(pt);
      Popup.Popup(pt.X,pt.Y);
    end;
    WM_QUIT: Free;  // Нужно добавить эту строку!
  end;
end;

Лучшая благодарность - "Мне нравится", +1 или Like! Вверху страницы.
(Последний раз сообщение было отредактировано 18.09.2010 в 9:31, отредактировал пользователь all__.)
18.09.2010 9:23
Вебсайт Найти все сообщения Цитировать это сообщение
Создать ответ