Консультация № 140752
26.07.2008, 08:10
0.00 руб.
0 1 1
Здравствуйте.
Есть программа, у которой отображается иконка в Трее с помощью TrayIcon (компонента).
Как мне:
1) Рисовать на Типсах (Tip), надо расположить одну две картинки (TIcon, берутся из TImageList). И строки текста. Желательно с изменяемой прозрачностью.

2) Как вызвать БалонТипс. Т.е. происходит какое-то событие, вызывается "Балон" с надписью и так же картинками. Если какой-то промежуток времени не закрывался закрыть программно.

Обсуждение

Неизвестный
29.07.2008, 16:48
общий
это ответ
Здравствуйте, Сарумян!

1. Стандартными средствами Windows - никак. Только делать свю собственную реализацию (Если я Вас правильно понял, и Вы имеете в виду простую всплывающую подсказку)

2. Для работы с BalloonHint необходимо использовать расширенную версию записи TNotifyIconData (см. приложение). Собственные иконки для этого хинта определить нельзя (их всего 4 - без иконки, Информационная (буква i), Предупреждение (желтый треугольник) и Ошибка (белый крестик в красном круге)).
Вызов BalloonHint производится функцией Shell_NotifyIcon (использование - в приложении).


Приложение:
Type
TBalloonIcon = (biNone, biInfo, biWarning, biError);

TNotifyIconDataEx = packed Record
cbSize : DWORD;
Wnd : HWND;
ID : UINT;
Flags : UINT;
Callback : UINT;
Icon : HICON;
Tip : Array [0..127] of AnsiChar;
State : DWORD;
StateMask : DWORD;
Info : Array [0..255] of AnsiChar;
Timeout : UINT;
InfoTitle : Array [0..63] of AnsiChar;
InfoFlags : DWORD;
end;


procedure ShowBaloonHint;
var
IconData: TNotifyIconDataEx;
begin
.....
IconData.Flags := IconData.Flags or NIF_INFO;
IconData.Info := 'Текст хинта';
IconData.InfoTitle := 'Заголовок Хинта' ;
IconData.Timeout := 5000; // Время отображения хинта
IconData.InfoFlags:= $00000001; // NIIF_INFO - иконка информации
Shell_NotifyIcon(NIM_ADD, IconData);
end;
Форма ответа