Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Помогите с TryIcon! [D5, Win95/98, WinME, WinXP]


[BAD]Angel ©   (2002-05-23 16:09:00) 

Уважаемые мастера!
У меня вопрос: можно ли не создавая формывывести иконку моей программы в SystemTray?
Пример: При запуске программы в SysTray"е появляется иконка, а дальше по ней кнопкой мыши тыкаешь и PopupMenu выскакивает! По сути, мне форма не нужна...

Если можно, подскажите, как это осуществить! Желательно поподробнее!

Заранее спасибо!


[BAD]Angel   (2002-05-30 14:44:00) [1]

Song © - А КАК ДОБАВИТЬ значок в dpr??????


Толик   (2002-05-24 10:50:00) [2]

to [BAD]Angel ©:
Иконка в tray добавляется через Shell_NotifyIcon. Первый параметр - то, что надо сделать с этой иконкой (см. help, там всё понятно), второй параметр типа NOTIFYICONDATA. В эту структуру в качестве окна, которое должно получать сообщения от иконки передать Application.Handle.

Если не хочется изобретать велосипед, можно посмотреть в библиотеке RxLib есть компонент TRxTrayIcon. Можно посмотреть как он реализован и использовать его, правда, поскольку форма не нужна, то его придётся создавать динамически в файле проекта(надеюсь, с этим проблем не возникнет? :)) Поскольку в приложении форм быть не должно, то для запуска приложения использовать Application.Run не получится. Придётся в файле проекта написать руками

AddExitProc(DoneApplication);
repeat
Application.HandleMessage
until Application.Terminated;

На самом деле этот цикл не что иное как ф-я Application.Run(), но без упоминания о формах (см. исходники TApplication). Ну и не забыть после этого цикла удалить созданный руками компонент.
Вот собственно и всё...


Song   (2002-05-23 17:56:00) [3]

Ну не создавай тогда формы, добавляй значок в dpr"e... Какие проблемы-то?


neodiX   (2002-05-23 17:53:00) [4]

Используй TService


[BAD]Angel   (2002-05-23 17:31:00) [5]

[Толик ©]

А как тогда выйти из положения?


Толик   (2002-05-23 17:26:00) [6]

У Application"а всегда есть скрытое окно, оно и может ловить всякие сообщения, в т.ч. и от иконки в трее.

for all
Народ, если пишут, что форма не нужна, зачем советовать Form1.Visible := FALSE????? Её вообще НЕ НАДО СОЗДАВАТЬ!!!


[BAD]Angel   (2002-05-23 17:14:00) [7]

Я слышал, что иконку можно создавать в самом DPR файле, без формы и других VCL компонент! Такое возможно?


Sasha9   (2002-05-23 16:30:00) [8]

упс ....... неуспел


Sasha9   (2002-05-23 16:29:00) [9]

хотябы одно окно у тебя должно быть чтобы реагировать на сообщения от иконки, поэтому просто поставь форме visible:=falseи в dpr файле перед Application.CreateFormпоставь Application.ShowMainForm:=false


[BAD]Angel   (2002-05-23 16:26:00) [10]

Спасибо, попробую...


Song   (2002-05-23 16:26:00) [11]

>> А конкретно, можно привести код программы без формы, чтобы в трее иконка висела?

Чтобы убрать программу- Application.ShowMainForm:=False;
Добавить значок: TShellNotifyIcon, NIM_ADD


Fredericco   (2002-05-23 16:23:00) [12]

Есть такая компонента TTrayIcon. Поищи в кладовке или в новостях VCL. Там можно и иконку в трей добавить и PopupMenu к ней привязать. А что бы форму скрыть перед Application.CreateForm(TForm1, Form1);пропиши Applicaton.ShowMainForm:=False;


[BAD]Angel   (2002-05-23 16:20:00) [13]

[Anatoly Podgoretsky (c)]

А конкретно, можно привести код программы без формы, чтобы в трее иконка висела?


Song   (2002-05-23 16:17:00) [14]

http://pascal.sources.ru/cgi-bin/forum/YaBB.cgi?board=delphi;action=display;num=1020241631


Anatoly Podgoretsky   (2002-05-23 16:14:00) [15]

Кто на новенького?

Пиши программу юез формы, раз тебе она не нужна, но тогда зачем нужна иконка?


Наверх

Титульная страница Поиск, карта сайта Написать письмо