Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Общие вопросы > Модальное окно


Автор: FireAlex 17.11.2005, 14:19
такая проблема.
существует приложение состоящее из основной форм и форм, которые может открывать пользователь.
я отрываю все окна функцией form1.showmodal
но если в винде станет активным другое приложение, а потом снова моё приложение, то form1 не показывается а показывается основная форма программы. лишь после щелчка мыши открывается форма form1. Как сделать, чтобы оно не исчезало? то есть если пользователь свернул приложение а потом снова развернул показывалась опять форма которую он открыл последней?

Автор: Snowy 17.11.2005, 14:36
Я бы сказал, но у меня такие артифакты не наблюдаются...

Автор: Albinos_x 17.11.2005, 15:08
Цитата(Snowy @ 17.11.2005, 14:36)
Я бы сказал, но у меня такие артифакты не наблюдаются...

аналогично....
Цитата(FireAlex @ 17.11.2005, 14:19)
Как сделать, чтобы оно не исчезало?

делай главную невидимой: Visible:=false; - самы простой способ решения твоей проблемы...

Автор: FireAlex 17.11.2005, 15:19
дело в том что на самом деле главная форма про которую я говору не является главной в проекте (опция MAinForm в свойствах проектра). главная форма - это форма которая появляется при старте программы и в которую пользователь вводит логин и пароль и в зависимости от введенного логина определяется элементы которые отображаются в основной форме - то есть своего рода определяется доступ...
после того как пользователь ввел логин и пароль основная форма становится невидимой и появляется "основная форма" уже программы...

Автор: FireAlex 17.11.2005, 15:47
всё я понял почему - в главном окне у меня есть таймер который выводит время и дату в статус баре внизу формы.
его убрал и всё стало нормально.
а как, тогда сделать чтобы всё работало вместе с таймером?

Автор: Albinos_x 17.11.2005, 16:04
можно в стиле формы поставить - поверх окон - FormStyle: = fsStayOnTop;

Автор: Snowy 17.11.2005, 16:07
А ты стопори таймер перед вызовом формы, а по закрытию запускай снова.
Хотя почему у тебя при модальной форме работает таймер непонятно...

Автор: Albinos_x 17.11.2005, 16:17
Цитата(Snowy @ 17.11.2005, 16:07)
Хотя почему у тебя при модальной форме работает таймер непонятно

угу...

Автор: FireAlex 17.11.2005, 16:19
2 Snowy таймер работает без проблем..

сделал FormStyle: = fsStayOnTop -стало нормально.. спасибо за совет!



Автор: FireAlex 18.11.2005, 07:40
тут обнаружилась ещё одна проблема.
если форма имеет стиль StayOnTop тогда сообщения функцией MesageDlg не отображаются....- они оказываются скрытыми формой...
может как то можно сделать чтобы сообщения всегда были поверх всех окон?

Автор: VVSF 18.11.2005, 08:13
Цитата(FireAlex @ 18.11.2005, 07:40)
можно сделать чтобы сообщения всегда были поверх всех окон?

есть такая штука application.normalizetopmosts/app.restoretopmosts. У меня в проекте подобная,но не аналогичная, проблема была с модальными формами. Дык я ввел глобально переменную типа ТФорм, которой я присваивал значение - активная в данный момент в приложении форма, а когда, соответственно, активизировал апп. показывалась моя модальна форма...ну, вроде понятно обьяснил свое решение.
//Дельфисты!кто-нибудь имеет знания Фокса??Мне нужна помощь по теме в базыД-Фокс\клиппер....ОЧЕНЬ нужна! Прошу прощения за флейм.

Автор: FireAlex 18.11.2005, 09:12
решил так:
Application.MessageBox(PAnsiChar('месага'),'Балда',mb_Ok+mb_Applmodal+mb_IconInformation);
если так выводить то обязательно сообщение будет поверх всех окон

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)