Форум программистов, компьютерный форум, киберфорум
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.62/26: Рейтинг темы: голосов - 26, средняя оценка - 4.62
0 / 0 / 0
Регистрация: 28.07.2008
Сообщений: 5

Проблема с иконкой в трее

28.07.2008, 09:23. Показов 5045. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго времени суток.
Помогите, please, в следующем вопросе:
Моя прога должна висеть при загрузке windows в трее.
Создаю икоку из программы без проблем (если форма видна),
а вот если главную форму делать невидимой (при запуске проги), то иконка конечно создастся, но контекстное меню, при щелчке правой кнопкой мыши не выводится.

Код следующий:
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
 
procedure TForm1.WMICON (var msg: TMessage); // приходит при щелчке по иконке
var  P: TPoint;
begin
     case msg.LParam of
     WM_LBUTTONDOWN: // левая кнопка мыши:
     begin  // открыть..
          SetForegroundWindow(Application.Handle);
          OpenAppl;
          DeleteTrayIcon(1);
     end;
     WM_RBUTTONDOWN: // правая кнопка мыши:
     begin  // меню..
         GetCursorPos(p);
         SetForegroundWindow(Application.Handle);
         Form1.PopupMenu1.Popup(p.X-50,p.Y);
     end;
     end;
end;
procedure TForm1.CreateTrayIcon(n:integer);
var  NIdata :TNotifyiconData;
begin
     with NIdata do
     begin
       cbSize:=SizeOf(TNotifyiconData);
       Wnd:=Self.Handle;
       uID:=n;
       uFlags:=NIF_ICON or NIF_MESSAGE or NIF_TIP;
       uCallBackMessage:=WM_MYTRAYNOTIFY;
       hicon:=Application.Icon.Handle;
       szTip:='Подсказка всплывающая';
     end;
     ShellAPI.Shell_NotifyIcon(NIM_ADD,@NIdata);
end;
procedure TForm1.DeleteTrayIcon(n:integer);
var  NIdata :TNotifyiconData;
begin
     with NIdata do
     begin
       cbSize:=SizeOf(TNotifyiconData);
       Wnd:=Self.Handle;
       uID:=n;
     end;
     ShellAPI.Shell_NotifyIcon(NIM_DELETE,@NIdata);
end;
procedure TForm1.HideTray;  // свернуть приложение в трей
begin
     Application.ShowMainForm:=false;
     ShowWindow(Application.Handle, SW_HIDE);
     ShowWindow(Application.MainForm.Handle, SW_HIDE);
     CreateTrayIcon(1);
end;
procedure TForm1.WMSYSCOMMAND(var Msg : TMessage); // обр-ка сворачивания формы
begin
     inherited;
     if (Msg.wParam=SC_MINIMIZE) then
     begin
         HideTray;
     end;
end;
procedure TForm1.d1Click(Sender: TObject);  // Открыть
begin
     OpenAppl;
     DeleteTrayIcon(1);
end;
procedure TForm1.N2Click(Sender: TObject);  // Выход
begin
     DeleteTrayIcon(1);
     Application.Terminate;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
     if not ShowOnce then
     begin
        CreateTrayIcon(1);
     end;
end;
И еще если после этого форму развернуть, то она не по центру экрана разворачивается, а как в среде при компиляции (в свойстве стоит по центру)

Направте на путь истинный :huh:.
Заранее спасибо.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
28.07.2008, 09:23
Ответы с готовыми решениями:

Работа с иконкой в трее FireMonkey. есть код, но не работает
Взял код из примера для delphi 7, подскажите пожалуйста можно ли его реализовать в fm?? Код не хочет компилироваться говоря:...

Проблема с иконкой приложения в проводнике
Доброго времени суток! Помогите понять в чем дело. Был большой проект на Delphi XE - все замечательно. Немного модифицировал код с...

Форма без иконки, с иконкой в трее
Здравствуйте, хочу узнать, как можно сделать, чтобы в самой форме небыло иконки, а в трее отображалась иконка, язык C#, VS2008 Скрин:

3
Aboltus
28.07.2008, 09:32
Вот лично я бы сделал так написал бы чтобы при запуске форма выводилась в режим трея, а потом чтобы было проявление невидимости главной формы.Будет выглядить примерно так:
Delphi
1
2
TreeМew1.Visible := True;
Form1.Visible := False;
Потом создаешь компонент PopupMenu. В TreeView ссылаешься на него и все.

(P.S. заранее буду благодарен если скажешь как сдлеать чтоб кнопки были с гладкими краями)
0 / 0 / 0
Регистрация: 28.07.2008
Сообщений: 5
28.07.2008, 16:51  [ТС]
лично я бы сделал так написал бы чтобы при запуске форма выводилась в режим трея
Че за режим трея? и че за зверь такой TreeМew1 ?
Я так делал:
Delphi
1
Application.ShowMainForm:=false;
Затем в unit-е:
Delphi
1
2
3
4
5
6
7
procedure TForm1.FormCreate(Sender: TObject);
begin
     if not ShowOnce then
     begin
        CreateTrayIcon(1);
     end;
end;
Форма запускается свернутой. Но Все компоненты включая PopupMenu1: TPopupMenu;автоматически создаются невидимыми.
---------------
Если че про кнопку соображу, отпишусь в соответствующей теме.
0
0 / 0 / 0
Регистрация: 28.07.2008
Сообщений: 5
31.07.2008, 09:22  [ТС]
Нашел!
Косяк был в строчке:
Delphi
1
SetForegroundWindow(Application.Handle);
Надо писать:
Delphi
1
SetForegroundWindow(Application.MineForm.Handle); //(или Form1.Handle)
Тогда фокус получает наша форма (и нё компонент меню)
даже если форма невидима.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
31.07.2008, 09:22
Помогаю со студенческими работами здесь

Принимать сообщения с серверов на Windows 7, желательно с иконкой в трее
С нескольких серверов linux нужно отсылать сообщения на 1 комп win7, где факт их поступления должен отображаться в трее, с возможностью...

Как сделать чтобы над иконкой в трее выводилось окно сообщения
Как сделать что бы над иконкой в трее выводилось окно сообщения? Или маленькое окошко с некоторой информацией над треем?

Проблема с иконкой на телефоне
Доброго времени суток, буду краток: 1: как должна выглядеть иконка 2: делал адаптивную и под каждое разрешение делал новую иконку 3:...

Проблема с лишней иконкой
как убрать ее помогите пожалуйста, заранее спасибо.

Проблема с иконкой в верхнем углу приложения
не получается изменить иконку в влевом верхнем углу приложения,иконку приложения на панели задач успешно поменял,а вот другая не ххочет...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru