Спрятать окно-родитель
Имеется форма Окно1 , она создает форму Окно2 в одной из своих функций. Окно1 должно быть всегда поверх Окно2, это сейчас достигается путем выставления стиля fsStayOnTop. Но приложение устроено так, что Окно2 является табом наравне с другими похожими окнами в MDI-приложении.
Необходимо прятать Окно1 , если было переключено с Окно2 на другие окна-табы. Окно1 и Окно2 имеют свойства, в которых хранят ссылки друг на друга. Окно2 может создаваться разными окнами, не только Окном1, поэтому еще необходимо делать проверку на имя класса вызвавшего окна.
Событие Окно2.OnHide не срабатывает, видимо потому, что Окно2 при переключении на другую вкладку не полностью прячется, а остается его маленькая часть-вкладка вверху. Событие Окно2.OnDeactivate вроде бы срабатывает,когда с Окна2 переключают на другое окно , но при создании Окна2 это событие срабатывает дважды (почему?), при этом ему еще не присвоен parent, т.е. не могу узнать, кто же его вызвал, далее при переключении это событие срабатывает и проверка по имени класс parent успешна, так как parent уже назначен. Но это тоже не выход, так как позже при новом переключении на уже существующее Окно2 событие OnActivate не срабатывает и следовательно я не могу включить Окно1 снова fsStayOnTop.
Подскажите, как тут выкрутиться? Есть ли проверка размера видимой области окна? Я бы мог проверить Окно2 на видимость, если она мала (только закладка видна), то значит оно скрыто.
|