2011-12-24 2 views
4

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

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

Frame11.Visible := true; 

Второе:

Frame11.Visible := false; 

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

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

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

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

+1

Если бы я пытался решить эту проблему, я бы постепенно удалял биты кода, пока программа не начнет вести себя. Это определит код проблемы. Не могли бы вы попытаться это сделать? –

+0

Конечно, я удалил все. Проверьте мой код, пожалуйста, ничего. – maxfax

+0

ОК, так какой бит кода делает разницу в том, что код работает и не работает? –

ответ

7

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

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

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

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

Смежные вопросы