Delphi: JEDI TrayIcon скрывает все кадры.ошибка - PullRequest
4 голосов
/ 24 декабря 2011

У меня есть рамка, две кнопки и JEDI TrayIcon (TJvTrayIcon, версия 3.40). Delphi XE.

Первая кнопка:

Frame11.Visible := true;

Второе:

Frame11.Visible := false;

Когда я пытаюсь свернуть окно -> восстановить его из системного трея -> нажать кнопку «Visible: = false», а затем «Visible: = true» = рамка не появляется.

Проблема в [tvAutoHide] Видимости TJvTrayIcon.

Я не вижу этой проблемы в новом проекте, но у меня есть в старом. Я не могу понять, почему это происходит и как это предотвратить. Пожалуйста, смотрите мой проблемный проект: http://www.filedropper.com/trayicon

Спасибо за помощь!

1 Ответ

7 голосов
/ 24 декабря 2011

Вы правы, в TJvTrayIcon есть ошибка. Когда AnimateToTray находится в параметрах Visibility, он не восстанавливает состояния Application.ShowMainForm и Application.MainForm.Visible. Оно показывает окно, но «Видимый» все еще ложно для вашей формы после ее восстановления. Это приводит к тому, что любая попытка показать скрытые элементы управления завершается неудачей, поскольку их родительский элемент , по-видимому, не отображается.

Исправление ошибки выходит за рамки этого ответа. Для обходного пути положите:

Application.ShowMainForm := True;
Visible := True;

где-то. Для быстрого тестирования в вашем событии нажатия кнопки Button1 перед показом фрейма. Но вы хотели бы поставить его после восстановления основной формы, чтобы не было других побочных эффектов.

...