Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2013.03.22;
Скачать: CL | DM;

Вниз

Модальное окно прячется под немодальным   Найти похожие ветки 

 
Циркуль   (2011-03-30 18:07) [0]

Dephi7,  Win7x64
Воспроизводится только на Win7, а из разработчиков Win7 стоит только у меня, поэтому мне этот баг и достался. :)

Есть форма. Не модальная, не "topmost". Назовем ее "главная форма" (ГФ).
Из нее открывается другая форма, тоже не модальная не "topmost". Назовем ее "вторая форма" (Ф2).
Между этими двумя формами можно свободно переключаться. Порядок форм (ZOrder) в этот момент:

1) Ф2  (на самом верху)
2) ГФ  (скрыта под Ф2)

На второй форме жмем кнопку "сохранить что-то там...", вызывается TSaveDialog.Execute, открывается окно диалога. Назовем его "окно диалога" (ОД). Окно, естесственно модальное. Порядок форм в этот момент:

1) ОД
2) Ф2
3) ГФ

Пока все замечательно. Но если теперь в окне диалога попытаться войти в папку, на которую нет прав даже на чтение, диалог показывает окно с сообщением об ошибке: "Сетевая ошибка. Виндовс не может получить доступ к <путь>". Назовем его "окно с сообщением" (ОСС). Это окно модально по отношению к окну диалога. Но порядок форм в этот момент оказывается такой:

1) ГФ
2) Ф2
3) ОСС
4) ОД

Т.е. сообщение об ошибке и окно диалога оказываются скрытыми под "обычными" окнами приложения (некликабельными в данный момент) и переключиться на них никак не получается.

Справедливости ради должен отметить, что ГФ и Ф2 - не прямые потомки TForm, и даже не внучки-правнучки. Попытка воспроизвести в тестовом приложении ничего не дала, в такой же ситуации все формы остаются в правильном порядке. Собственно вопрос - что могли в них или их предках (или еще где) понаписать, что приводит к такому "перемешиванию" окон? Где искать, куда копать, что пытаться отловить?

Брекпойнты на всяких SendToBack, BringToFront, SetZOrder эффекта не дают. Пытался отловить сообщения, получаемые окнами в момент показа сообщения об ошибке. WinSpy++ отказался их мониторить (видимо, потому что приложение 32-битное). WinSight32 сказал, что в этот момент формам приходят WM_WINDOWPOSCHANGING и WM_WINDOWPOSCHANGED... Но точно такие же приходят и окнам тестового приложения, в котором все работает нормально.


 
Циркуль   (2011-03-30 18:14) [1]

поправка: "topmost" читать как "StayOnTop" :)


 
KSergey ©   (2011-04-04 14:50) [2]

Возможно, переопределены обработчики каких-то сообщений.


 
Циркуль   (2011-04-04 15:37) [3]

Можно пойти "от противного", т.е. решить задачу "напишите дурацкое приложение, в котором форма при вызове окна диалога сохранения файла оказывается над этим окном, оставаясь при этом неактивной".

Что посоветуете? :)


 
_Юрий   (2011-04-04 18:28) [4]


> Собственно вопрос - что могли в них или их предках (или
> еще где) понаписать, что приводит к такому "перемешиванию"
> окон? Где искать, куда копать, что пытаться отловить?


если найдете, сообщайте. Пока вроде никому не удавалось


 
Макс Черных   (2011-04-06 01:43) [5]


> Пока вроде никому не удавалось

Ну почему сразу никому ?

1. Это проявляется не только в 7, но и в висте иногда.
2. А копать надо в сторону свойства popupmode у TForm, обязательно ставить MainFormOnTaskBar=True, и забыть носовсем про всякие там stayontop. И все будет работать как надо, проверено.


 
Германн ©   (2011-04-06 01:49) [6]


> Макс Черных   (06.04.11 01:43) [5]
>
>
> > Пока вроде никому не удавалось
>
> Ну почему сразу никому ?
>
> 1. Это проявляется не только в 7, но и в висте иногда.
>

Это проявляется иногда и в ХР и проявлялось иногда в 98-м и во всех прочих ОС Windows. И до сих пор не понятно когда и почему? И я не уверен, что Дельфи тому причиной.



Страницы: 1 вся ветка

Текущий архив: 2013.03.22;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.078 c
15-1351492587
Olga.Duplenko
2012-10-29 10:36
2013.03.22
Работа для классных профессионалов-разработчиков


2-1343932360
Drowsy
2012-08-02 22:32
2013.03.22
Какой таблице принадлежит запись со значением ключа?


2-1337924665
leklerk
2012-05-25 09:44
2013.03.22
Отослать сообщения пользователям


2-1345929626
Wadimka
2012-08-26 01:20
2013.03.22
Подскажите компонент для delphi для работы с SSH


10-1181018110
Yriy
2007-06-05 08:35
2013.03.22
Проблема с Excel 2003