![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
|||
|
|||
|
Создаю программу, нечто вроде уведомления о том, что меня вызывают в другой кабинет. Чтобы не мешалась - добавил возможность сворачивания в трей.
Каждые 5 секунд программа отправляет запрос на сервер с проверкой статуса (вызвали/не вызвали). При развернутом состоянии - программа выходит на передний план и моргает сообщением, что меня вызывают. А когда находится в трее, должно выбрасывать BalloonHint с сообщением о том, что меня вызывают, но этого не происходит. Код: Код:
JSON := TJsonObject.Parse(Response) as TJsonObject;
if Assigned(JSON) then
begin
try
//ShowMessage(JSON.ToJSON(False));
if JSON['amount'].IntValue > 0 then
begin
GLOBAL_DOCTORS := JSON['data'].ArrayValue;
Doctor := GLOBAL_DOCTORS.Items[DOCTOR_INDEX].ObjectValue;
if Doctor['nurse_call'].IntValue = 1 then
begin
if not isTray then {isTray - переменная меняется в зависимости, свернуто ли приложение в трей или нет}
begin
SetForegroundWindow(Application.Handle);
lbl_notify.Caption := lbl_notify_Call;
tmr_blink.Enabled := True;
frm.WindowState:=wsNormal;
frm.FormStyle := fsStayOnTop;
end else
begin
ti_main.BalloonTitle := 'ВАС ВЫЗЫВАЮТ В ПЕРЕВЯЗОЧНЫЙ!';
ti_main.ShowBalloonHint;
end;
end;
// ShowMessage(Doctor.ToJSON(False));
end else
begin
Logger(' Список доступных врачей пуст.');
lbl_chooseDoctor.Caption := 'НЕТ ВРАЧЕЙ';
end;
finally
JSON.Free;
end;
end else
begin
raise Exception.Create('Файл не содержит JSON-данные');
end;В чем может быть ошибка? Или приложение, когда находится в трее, работает как-то иначе? UPD. Странно... В win10 нет balloonhint? Я так понимаю, его надо заменить пользовательским? Вот код сворачивания в трей: Код:
procedure Tfrm.MinimizeForm;
begin
ti_main.Visible := True;
ti_main.Hint := ('ОКДО - Уведомления' + #1310 + cb_chooseDoctor.Items[DOCTOR_INDEX]);
Hide();
WindowState := wsMinimized;
isTray := True;
ti_main.BalloonTitle := 'ВАС ВЫЗЫВАЮТ В ПЕРЕВЯЗОЧНЫЙ!';
ti_main.ShowBalloonHint;
end;Хинт не появляется... Последний раз редактировалось VolodinAS, 15.06.2020 в 21:37. |
|
#2
|
|||
|
|||
|
В Win10 сообщение должно появляться в менеджере уведомлений.
Вообще, должно все работать. Правда я давно перешел на самописный хинт, но все работает и со стандартным. Правдя я использую CoolTrayIcon (или как он там) компонент, причем достаточно старую версию. В проекте, который еще в разработке, все работает со стандартным компонентом, в законченном компоненте - с самописным хинтом (написан на основе JvclTrayForm, опять же, не помню как он точно там называется). |
|
#3
|
|||
|
|||
|
Цитата:
Весьма интересно получилось. Код:
ti_main.BalloonHint := 'Вас вызывают в перевязочный кабинет!';
ti_main.BalloonTitle := 'ВНИМАНИЕ!';
ti_main.ShowBalloonHint;Я просто указал title, hint.. и оно заработало... Видимо, оно работает в связке, когда надо указывать оба параметра: ![]() |
|
#4
|
|||
|
|||
|
Ну, дык, это я протормозил. Ведь BaloonHint и есть само сообщение, если оно пустое, то и показывать нечего... а титл, возможно, и не обязателен, будет использованно имя приложения (ну если в Win10 ничего не поменяли...)
|