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

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

Вывод на экран модального окна сразу после открытия главного окна [D6, Win2k]


Nikolai_S ©   (2002-11-12 12:00:00) 

Как вывести на экран модальное окна сразу после открытия главного окна? Если использовать событие OnShow, то модальное окно появляется до открытия главной формы.


_Nicola_   (2002-11-12 18:23:00) [1]

2Reindeer Moss Eater (12.11.02 17:07)
А где гарантия, что модальная форма уже создалась?


Александр Спелицин   (2002-11-12 17:52:00) [2]

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


Reindeer Moss Eater   (2002-11-12 17:07:00) [3]

>_Nicola_
На самом деле все еще проще:

procedure TForm1.FormCreate(Sender: TObject);
begin
Show;
ShowMessage("Bla Bla Bla");
end;


_Nicola_   (2002-11-12 16:21:00) [4]

Да нет, все проще.
Есть такая штука Application.OnIdle.

Пишешь в private формы:

procedure MyIdleHandler(Sender: TObject; var Done: Boolean);

Потом в implementation

procedure MyIdleHandler(Sender: TObject; var Done: Boolean);
begin
Application.OnIdle := nil;// <-- _ОБЯЗАТЕЛЬНО_ И ПЕРВОЙ СТРОКОЙ
...
ModalForm.ShowModal;
...
end;

И, например, в OnShow главной формы:
Application.OnIdle := MyIdleHandler;

И усе!

Есть более простой путь - использовать AppEvent из RxLib, но там тоже не без премудростей.
А еще этот вопрос есть в куче FAQ.


IDKFA   (2002-11-12 12:53:00) [5]

Советую прописать вызов модальной формы в OnPaint главной!


Dmitriy Polskoy   (2002-11-12 12:38:00) [6]

В OnActivate все отлично работает


Reindeer Moss Eater   (2002-11-12 12:34:00) [7]

Просто перед показом модального окна надо дать успеть главной форме отрисоваться.


Юрий Федоров   (2002-11-12 12:26:00) [8]

думаю, что на OnShow нужно отправить PostMessage главному окну, на обработку сообщения уже вызвать Form2.ShowModal


stone   (2002-11-12 12:15:00) [9]

можно навесить таймер и по OnTimer показывать модальное окно


Nikolai_S   (2002-11-12 12:12:00) [10]

Нет, то же самое выходит. Моадльное окно загружается раньше


Skier   (2002-11-12 12:09:00) [11]

>Nikolai_S
OnActivate() ?


Наверх

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