Форум программистов, компьютерный форум, киберфорум
Delphi
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.82/11: Рейтинг темы: голосов - 11, средняя оценка - 4.82
561 / 484 / 168
Регистрация: 14.02.2012
Сообщений: 1,561
1

Трей-контрол на delphi

14.09.2012, 22:28. Показов 1977. Ответов 21
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Хочу сделать трей-контрол как в аимпе(см. скрин). Есть у меня главная форма, использую TCoolTrayIcon. Надо при наведении мыши в область этой иконки показывать трей-контрол. Есть там OnMouseMove, но работает через раз.
Миниатюры
Трей-контрол на delphi  
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
14.09.2012, 22:28
Ответы с готовыми решениями:

Двигаю контрол мышкой по форме Access, но контрол движется медленнее мышки
сабж. код прилагаю. нид хелп Private Declare Function GetCursorPos Lib "user32.dll" (ByRef...

Как можно изменить слой, на котором находится контрол? Чтобы один контрол всегда рисовался поверх другого?
Просто я создаю контролы динамически, и при появлении они всегда ниже созданных ранее, это...

Трей
Народ, такая ерунда получается, при использовании Application Events и TrayIcon программа...

Трей
Здравствуйте! С помощью какой программы можно открыть трей, который находится на панеле задач?...

21
15 / 15 / 2
Регистрация: 22.05.2012
Сообщений: 68
16.09.2012, 20:42 2
НУ так если через раз работает, значит программа все что может делает, вернее делает то, что ты ей написал. Смею предположить, что ты просто мало времени ждешь при наведении, бывают глюки, когда с 1 момента оно не распознает...
0
1302 / 708 / 107
Регистрация: 25.05.2011
Сообщений: 2,158
Записей в блоге: 51
16.09.2012, 21:37 3
имхо наведение на контрол в трее не должно ничего вызывать кроме попап подсказки
а вот клик уже должен раскрывать сабж
0
Заблокирован
16.09.2012, 22:44 4
Я понимаю трей-контрол это та кнопочка в которую будет сворачиватся программа, значит при сварачивание или нажатие на кнопку свернуть в системном меню программы должна программа сворачиватся в трей или устанавливатся в трей при запуске.
0
angstrom
17.09.2012, 03:58 5
В данном варианте (использование Трэя), программа должна скрываться, а не сворачиваться. Ни в какую "кнопочку" в Трэе программы вообще никогда не сворачивались, не сворачиваются и не устанавливаются. Для понимания механизма TrayBar-а, читать MSDN.
Заблокирован
17.09.2012, 14:14 6
Цитата Сообщение от angstrom Посмотреть сообщение
В данном варианте (использование Трэя), программа должна скрываться, а не сворачиваться. Ни в какую "кнопочку" в Трэе программы вообще никогда не сворачивались, не сворачиваются и не устанавливаются. Для понимания механизма TrayBar-а, читать MSDN.
У формы есть событие Window Menu может оно.
0
561 / 484 / 168
Регистрация: 14.02.2012
Сообщений: 1,561
17.09.2012, 17:52  [ТС] 7
Я отказался от этой идеи. Теперь вместо трей-контрола компактный режим плеера(типа winamp).
0
Заблокирован
17.09.2012, 18:31 8
Цитата Сообщение от Вася97 Посмотреть сообщение
Я отказался от этой идеи. Теперь вместо трей-контрола компактный режим плеера(типа winamp).
оставь идею.
0
561 / 484 / 168
Регистрация: 14.02.2012
Сообщений: 1,561
18.09.2012, 17:23  [ТС] 9
Цитата Сообщение от Саша2 Посмотреть сообщение
оставь идею.
Типа "оставь"? Она оказалась слишком сложной чтобы реализовать(или я просто что-то не понял?).
0
Заблокирован
18.09.2012, 18:24 10
Я думаю что функции, которые помогут решить проблему находятся в модуле Windows.
0
angstrom
18.09.2012, 21:18 11
Цитата Сообщение от Вася97 Посмотреть сообщение
Типа "оставь"? Она оказалась слишком сложной чтобы реализовать(или я просто что-то не понял?).
Напротив, идея очень легка в реализации. Что непонятно?
15 / 15 / 2
Регистрация: 22.05.2012
Сообщений: 68
18.09.2012, 21:38 12
Цитата Сообщение от Саша2 Посмотреть сообщение
Я думаю что функции, которые помогут решить проблему находятся в модуле Windows
+1
давно использовал их от туда
0
561 / 484 / 168
Регистрация: 14.02.2012
Сообщений: 1,561
18.09.2012, 21:38  [ТС] 13
Цитата Сообщение от angstrom Посмотреть сообщение
Что непонятно?
Есть форма(трей-контрол) и есть TCoolTrayIcon в трее. Как мне при наведении на иконку в трее заставить показать форму?
0
157 / 300 / 47
Регистрация: 14.08.2012
Сообщений: 2,578
19.09.2012, 16:34 14
Цитата Сообщение от Вася97 Посмотреть сообщение
Есть форма(трей-контрол) и есть TCoolTrayIcon в трее. Как мне при наведении на иконку в трее заставить показать форму?
может при клике на иконку?
0
561 / 484 / 168
Регистрация: 14.02.2012
Сообщений: 1,561
19.09.2012, 20:26  [ТС] 15
Цитата Сообщение от саша40 Посмотреть сообщение
может при клике на иконку?
Если бы мне надо было по клику, то я уже бы с делал.
0
157 / 300 / 47
Регистрация: 14.08.2012
Сообщений: 2,578
19.09.2012, 20:46 16
Цитата Сообщение от Вася97 Посмотреть сообщение
Если бы мне надо было по клику, то я уже бы с делал.
а мне можешь дать код, плиз, очень надо.
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
32835 / 21172 / 8148
Регистрация: 22.10.2011
Сообщений: 36,431
Записей в блоге: 8
19.09.2012, 21:24 17
Вася97, я не понял, в чем проблема? Без компонентов - никуда? Смотри:

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
// 1 - сообщение, которое будет приходить из трея
Const
   WM_TRAYICON = WM_USER + 1;
 
 
// 2 - Добавляем в класс формы кое что:
type
   TForm1 = class(TForm)
   // ...
   private
      { Private declarations }
      nid : TNotifyIconData; // Для этого понадобится добавить ShellApi в Uses
      procedure TrayIconHandler(var Msg : TMessage); message WM_TRAYICON;
  public
    { Public declarations }
  end;
 
// 3 - пишем этот самый TrayIconHandler:
 
procedure TForm1.TrayIconHandler(var Msg : TMessage);
begin
   if Msg.Msg = WM_TRAYICON then
   case Msg.LParam of
      WM_MOUSEMOVE:
      begin
         // Ага! Мыша прошла над иконкой в трее!!! Делай, что нужно
      end;
      WM_LBUTTONDOWN:
      begin
         // Нажали на иконку. Обрабатывай, как надо
      end;
   end;
end;
 
// 4 - добавляем иконку в трей, собственно
procedure TForm1.FormCreate(Sender: TObject);
begin
   with nid do
   begin
      cbSize := SizeOf(nid);
      Wnd := self.Handle;
      uID := 1;
      uFlags := NIF_ICON or NIF_MESSAGE or NIF_TIP;
      uCallbackMessage := WM_TRAYICON;
      hIcon := GetClassLong(self.Handle,GCL_HICONSM); // Иконку можешь загрузить по желанию
      StrPCopy(szTip, 'Это моя иконка!!!');
   end;
   Shell_NotifyIcon( NIM_ADD, @nid); // Вот оно, иконка должна появиться
end;
Вот и всё. Не забываем удалять иконку через
Delphi
1
Shell_NotifyIcon (NIM_DELETE,@nid);
при закрытии приложения... Работает прекрасно. Минут 20 гонял сейчас приложение, мышой и с одной, и с другой стороны заходил, ни одного неправильного срабатывания не случилось
1
561 / 484 / 168
Регистрация: 14.02.2012
Сообщений: 1,561
19.09.2012, 21:50  [ТС] 18
Win32:Malware-gen у меня при компиляции этого кода. Только этого кода. SysConst.bak нет, в HKEY_LOCAL_MACHINE\SOFTWARE\Borland\Delphi\7.0 RootDir как надо.
0
angstrom
19.09.2012, 21:53 19
Если антивирус ругается на только что откомпилированный код, грош цена такому антивирусу.
561 / 484 / 168
Регистрация: 14.02.2012
Сообщений: 1,561
19.09.2012, 22:15  [ТС] 20
Отчет с virustotal.com. Что же это такое?
0
19.09.2012, 22:15
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
19.09.2012, 22:15
Помогаю со студенческими работами здесь

в трей
как сделать? чтобы программа при нажатие на кнопку на клавиатуре например home программа...

Трей
Как свернуть программу в трей?

Свернуть в трей
Использую библиотеку Jedi - JvTrayIcon1 Activate = true; TvRestoreDbClick = True; Иконка после...

Программу в трей
Доброго времени суток, нигде не могу найти информации как свернуть программу в трей. Прошу помощи....


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru