|
|
Регистрация | << Правила форума >> | 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. |