Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 03.03.2007, 10:13   #1
Маркъ
Пользователь
 
Регистрация: 02.02.2007
Сообщений: 32
Вопрос Всплывающяя подсказка в трее

Как создать всплывающую подсказку в трее в стиле Dr.Web или JetAudio? Для создания иконки в трее использую RxTrayIcon.
Маркъ вне форума Ответить с цитированием
Старый 03.03.2007, 11:36   #2
delphin_max
Пользователь
 
Аватар для delphin_max
 
Регистрация: 02.03.2007
Сообщений: 15
По умолчанию

Например Raiz компоненты

Form1.RzTrayIcon1.ShowBalloonHint(З аголовок,тест,bhiInfo,10);

или вот так.

Код:
unit Unit1; interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs; {new constant definitions} const NIF_INFO = $10; NIF_MESSAGE = 1; NIF_ICON = 2; NOTIFYICON_VERSION = 3; NIF_TIP = 4; NIM_SETVERSION = $00000004; NIM_SETFOCUS = $00000003; NIIF_INFO = $00000001; NIIF_WARNING = $00000002; NIIF_ERROR = $00000003; NIN_BALLOONSHOW = WM_USER + 2; NIN_BALLOONHIDE = WM_USER + 3; NIN_BALLOONTIMEOUT = WM_USER + 4; NIN_BALLOONUSERCLICK = WM_USER + 5; NIN_SELECT = WM_USER + 0; NINF_KEY = $1; NIN_KEYSELECT = NIN_SELECT or NINF_KEY; NIN_BALLOONSHOW = WM_USER + 2; NIN_BALLOONHIDE = WM_USER + 3; NIN_BALLOONTIMEOUT = WM_USER + 4; NIN_BALLOONUSERCLICK = WM_USER + 5; NIN_SELECT = WM_USER + 0; NINF_KEY = $1; NIN_KEYSELECT = NIN_SELECT or NINF_KEY; {other constants can be found in vs.net---vc7's dir: PlatformSDK\Include\ShellAPI.h} {define the callback message} TRAY_CALLBACK = WM_USER + $7258; {new NotifyIconData structure definition} type PNewNotifyIconData = ^TNewNotifyIconData; TDUMMYUNIONNAME = record case Integer of 0: (uTimeout: UINT); 1: (uVersion: UINT); end; TNewNotifyIconData = record cbSize: DWORD; Wnd: HWND; uID: UINT; uFlags: UINT; uCallbackMessage: UINT; hIcon: HICON; //Version 5.0 is 128 chars, old ver is 64 chars szTip: array [0..127] of Char; dwState: DWORD; //Version 5.0 dwStateMask: DWORD; //Version 5.0 szInfo: array [0..255] of Char; //Version 5.0 DUMMYUNIONNAME: TDUMMYUNIONNAME; szInfoTitle: array [0..63] of Char; //Version 5.0 dwInfoFlags: DWORD; //Version 5.0 end; type TForm1 = class(TForm) procedure FormCreate(Sender: TObject); procedure FormDestroy(Sender: TObject); private IconData: TNewNotifyIconData; procedure SysTrayIconMsgHandler(var Msg: TMessage); message TRAY_CALLBACK; procedure AddSysTrayIcon; procedure ShowBalloonTips; procedure DeleteSysTrayIcon; public end; var Form1: TForm1; implementation {$R *.DFM} uses ShellAPI; procedure TForm1.SysTrayIconMsgHandler(var Msg: TMessage); begin case Msg.lParam of WM_MOUSEMOVE:; WM_LBUTTONDOWN:; WM_LBUTTONUP:; WM_LBUTTONDBLCLK:; WM_RBUTTONDOWN:; WM_RBUTTONUP:; WM_RBUTTONDBLCLK:; //followed by the new messages NIN_BALLOONSHOW: {Sent when the balloon is shown} ShowMessage('NIN_BALLOONSHOW'); NIN_BALLOONHIDE: {Sent when the balloon disappears?Rwhen the icon is deleted, for example. This message is not sent if the balloon is dismissed because of a timeout or mouse click by the user. } ShowMessage('NIN_BALLOONHIDE'); NIN_BALLOONTIMEOUT: {Sent when the balloon is dismissed because of a timeout.} ShowMessage('NIN_BALLOONTIMEOUT'); NIN_BALLOONUSERCLICK: {Sent when the balloon is dismissed because the user clicked the mouse. Note: in XP there's Close button on he balloon tips, when click the button, send NIN_BALLOONTIMEOUT message actually.} ShowMessage('NIN_BALLOONUSERCLICK'); end; end; {AddSysTrayIcon procedure add an icon to notification area} procedure TForm1.AddSysTrayIcon; begin IconData.cbSize := SizeOf(IconData); IconData.Wnd := AllocateHWnd(SysTrayIconMsgHandler); {SysTrayIconMsgHandler is then callback message' handler} IconData.uID := 0; IconData.uFlags := NIF_ICON or NIF_MESSAGE or NIF_TIP; IconData.uCallbackMessage := TRAY_CALLBACK; //user defined callback message IconData.hIcon := Application.Icon.Handle; //an Icon's Handle IconData.szTip := 'Please send me email.'; if not Shell_NotifyIcon(NIM_ADD, @IconData) then ShowMessage('add fail'); end; {ShowBalloonTips procedure carry out the new feature: Balloon Tips} procedure TForm1.ShowBalloonTips; var TipInfo, TipTitle: string; begin IconData.cbSize := SizeOf(IconData); IconData.uFlags := NIF_INFO; TipInfo := 'Please send me email.'; strPLCopy(IconData.szInfo, TipInfo, SizeOf(IconData.szInfo) - 1); IconData.DUMMYUNIONNAME.uTimeout := 3000; TipTitle := 'Happyjoe@21cn.com'; strPLCopy(IconData.szInfoTitle, TipTitle, SizeOf(IconData.szInfoTitle) - 1); IconData.dwInfoFlags := NIIF_INFO; //NIIF_ERROR; //NIIF_WARNING; Shell_NotifyIcon(NIM_MODIFY, @IconData); {in my testing, the following code has no use} IconData.DUMMYUNIONNAME.uVersion := NOTIFYICON_VERSION; if not Shell_NotifyIcon(NIM_SETVERSION, @IconData) then ShowMessage('setversion fail'); end; {here's the deletion procedure} procedure TForm1.DeleteSysTrayIcon; begin DeallocateHWnd(IconData.Wnd); if not Shell_NotifyIcon(NIM_DELETE, @IconData) then ShowMessage('delete fail'); end; procedure TForm1.FormCreate(Sender: TObject); begin AddSysTrayIcon; ShowBalloonTips; end; procedure TForm1.FormDestroy(Sender: TObject); begin DeleteSysTrayIcon; end; end.
Shark-Media group icq:8485368
delphin_max вне форума Ответить с цитированием
Старый 03.03.2007, 12:36   #3
Маркъ
Пользователь
 
Регистрация: 02.02.2007
Сообщений: 32
По умолчанию

Цитата:
Например Raiz компоненты
Form1.RzTrayIcon1.ShowBalloonHint(З аголовок,тест,bhiInfo,10);
Если можно поподробнее опишите параметры вызова:
bhiInfo
10

Последний раз редактировалось Маркъ; 03.03.2007 в 13:20.
Маркъ вне форума Ответить с цитированием
Старый 03.03.2007, 12:40   #4
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

Цитата:
Сообщение от Маркъ Посмотреть сообщение
Как создать всплывающую подсказку в трее в стиле Dr.Web или JetAudio? Для создания иконки в трее использую RxTrayIcon.
А что, разве попап-меню к ней не цепляется?
С чего вдруг такой вопрос?
Или нужен хинт-баллон с "указивкой"? Тогда - пожалуйста:
Вложение 389
Берем и устанавливаем...

Последний раз редактировалось mihali4; 23.03.2007 в 11:25.
mihali4 вне форума Ответить с цитированием
Старый 03.03.2007, 12:49   #5
delphin_max
Пользователь
 
Аватар для delphin_max
 
Регистрация: 02.03.2007
Сообщений: 15
По умолчанию

[quote=Маркъ;12832]
Цитата:
Сообщение от delphin_max Посмотреть сообщение
Например Raiz компоненты
Form1.RzTrayIcon1.ShowBalloonHint(З аголовок,тест,bhiInfo,10);
[ /QUOTE]

Если можно поподробнее опишите параметры вызова:
bhiInfo
10
bhinfo - тип значка инфо.
bhinone
bhiwarning
bhierror

10-таймаут (сек)


procedure ShowBalloonHint( const Title: string; const Msg: string; IconType: TRzBalloonHintIcon = bhiInfo;


Модуль :RzTray.pas
Shark-Media group icq:8485368
delphin_max вне форума Ответить с цитированием
Старый 03.03.2007, 13:22   #6
Маркъ
Пользователь
 
Регистрация: 02.02.2007
Сообщений: 32
По умолчанию

Цитата:
Или нужен хинт-баллон с "указивкой"?
Именно. Наводишь мышь на ярлык в трее и появляется подсказка с информацией. Например у Dr.Web это статистика сканирования
Маркъ вне форума Ответить с цитированием
Старый 03.03.2007, 13:41   #7
Маркъ
Пользователь
 
Регистрация: 02.02.2007
Сообщений: 32
По умолчанию

Посмотрел я Danhint, но что-то совсем ничего не понял
Если можно покажите на примере как им пользоватся.
Маркъ вне форума Ответить с цитированием
Старый 03.03.2007, 14:10   #8
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

Цитата:
Сообщение от Маркъ Посмотреть сообщение
Посмотрел я Danhint, но что-то совсем ничего не понял
Если можно покажите на примере как им пользоватся.
Нужно просто бросить на форму. Хинты назначаются любому компоненту, как и обычно. Разница только в том, что когда возникает необходимость вывести именно баллон, делаем
Danhint.1.HintActive:=True;
В результате вместо стандартного хинта будет показываться баллон. А больше никаких хитростей. Ну, можно настроить цвет фона баллона, шрифта, отбрасываемой тени и т.д. - все это просматривается в инспекторе объектов...
Если просто нужно, чтобы в вашей программе все хинты были баллонами, а не стандартными, то по событию созания формы прописываем приведенный выше код. Вот и все.
mihali4 вне форума Ответить с цитированием
Старый 03.03.2007, 18:19   #9
Маркъ
Пользователь
 
Регистрация: 02.02.2007
Сообщений: 32
По умолчанию

Теперь понял, но данный компонент не работает с RxTrayIcon. Притом это не совсем то, что мне нужно. Мне нужно нечто похожее на хинт-баллон, только ещё с кнопочкой закрыть.
В общем посмотрите на рисунке.
Маркъ вне форума Ответить с цитированием
Старый 04.03.2007, 00:53   #10
Speeker
Форумчанин
 
Аватар для Speeker
 
Регистрация: 01.12.2006
Сообщений: 241
По умолчанию

Попробуй этот компонент
Вложения
Тип файла: rar 1.rar (318.8 Кб, 186 просмотров)
Програмисты - единственные люди, которым платят за исправления их же ошибок
Speeker вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Моя всплывающая подсказка не работает в IE Stason JavaScript, Ajax 1 11.09.2008 18:18
Подсказка artemavd Общие вопросы Delphi 1 17.07.2008 19:34
C# подсказка MAcK Общие вопросы .NET 4 10.07.2008 12:38
многострочная подсказка с задержкой dimonbest Общие вопросы Delphi 6 24.03.2008 13:13
нужна подсказка по MYSQL!!! Noor Помощь студентам 5 03.04.2007 10:52