Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Модальное окно "прячется" за основную форму ??? [D7, WinXP]


DimDim ©   (2005-09-17 19:43:00) 

Уважаемые Мастера, помогите разобраться!
Суть вопроса: При запуске программы в OnActivate выполняются некоторые проверки и выдаются соответствующие сообщения в виде модальных диологовых окон (не системных). В WinXP эти окна ИНОГДА "прячутся" за главное окно программы и пользователи их не видят. В результате, внешне это выглядит как "зависшая" программа. Соответственно, процедура запуска (та, что в OnActivate) до конца не отработала и программа не работает.
Происходит это ТОЛЬКО на WinXP и абсолютно непредсказуемо. Т.е. в 2-х случаях из 3-х грузится нормально.


КиТаЯц   (2005-09-21 10:06:00) [1]

Было. Только на ХР.
Программа отрабатывает длинный цикл без всяких рефреший чтобы побыстрей. Нетерпеливый юзер кликает по заголовку главной формы - главная выходит поверх модального, а фокус остается на модальном.

Набил во все циклы Application.ProcessMessage;
Вроде помогло...


Экспериментатор   (2005-09-21 08:47:00) [2]

Было у меня такое.
Как бороться не знаю до сих пор.
Стал избегать продолжительных операций того рода


Aleksandr.   (2005-09-20 15:48:00) [3]

ИМХО, это глюк связанный с XP.
Я вообще эту хрень обходил тем, что по окончании всех инициализаций и т.д. вызывал Application.BringToFront, при котором нормально перестраивался ордер окон.


BFG9k   (2005-09-20 15:41:00) [4]

Видимо ты что-то криминальное делаешь после или до  того, как модальное окно появилось. У меня такое было - программа при запуске сворачивалась в трей и одновременно с этим могло возникнуть информационное сообщение. Получалось все как у тебя. Решение - избегать таких ситуаций.


Deka   (2005-09-19 12:29:00) [5]

У меня было такое - побороть не удалось, но и разбирался я не сильно. Просто ушел от решения с модальными диалогами. А в другом случае прятал главную форму.


Defunct   (2005-09-19 10:01:00) [6]

Само по себе не может такое появляться...


DimDim   (2005-09-18 13:19:00) [7]

Чаво??? Я единственный, кто видел что модальные окна в XP "прячутся" за основные???
Поясняю: при этом фокус остается на модальном окне. Соответственно главное окно невозможно отодвинуть, пока фокус находится на модальном, а его не видно! Пользователи начинают с этим бороться перезагрузкой Windows (мало кто знает три волшебные клавиши).
Пытаюсь с этим бороться уже месяца 4.
Небольшое улучшение было после того, как в теле OnActivate понаставил Application.ProcessMessages;.  Но все равно периодически вылазит такая дрянь.


DimDim   (2005-09-17 20:02:00) [8]

Так в том-то и прикол, что программа одинаково себя ведет со свойствами окон fsStayOnTop и fsNormal.
Может из-за того, что модальные окна создаются динамически?
Запускаю их:
     Application.CreateForm(TFormOPEN1,FormOPEN1);
     FormOPEN1.ShowModal;
     FormOPEN1.Free;


Defunct   (2005-09-17 19:51:00) [9]

ставить свойсво FormStyle = fsStayOnTop у диалогов.


Наверх

Титульная страница Поиск, карта сайта Написать письмо