![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Закрытие формы [D6, Win95/98, WinME, NT4, Win2k, WinXP]
Ivan_73 © (2003-01-24 09:04:00)Мастера. Обрабатывается событие OnActivate. Как в этом обработчике, при определеннных условиях, сделать, чтобы форма не появилась. "Close" не работает, так как форма еще не появилась.
MacX (2003-01-25 00:06:00) [1]Мне кажется автор имел ввиду, как сделать чтобы главная форма не появлялась после Application.Run Т.е. проверяется условие и в зависимости от него программа запускается дальше или выгружается, но так, чтобы главная форма не появилась... хотя может я ошибаюсь
Севостьянов Игорь (2003-01-24 16:13:00) [2]Было у меня приблизительно такая потребность, надо было от унаследнованной формы (большой проект), чтобы не показывалась форма наследника, но If not Чего-то там then ShowModalне подходит, т.к. переписывать вызов формы (условия при которых вызывалась) было нельзя... И поэтому просто в наследнике переписалась ShowModal, которая является virtual методом. Вот в этом ShowModal и происходит Show (вызов метода Show)и Activate формы (
с помощью SendMessage(Handle, CM_ACTIVATE, 0, 0);)
Anatoly Podgoretsky (2003-01-24 09:32:00) [3]If not Чего-то там then Show
и нет возможности у юзера.
Reindeer Moss Eater (2003-01-24 09:18:00) [4]Правда все это можно назвать ответом на вопрос:
как сделать, что бы юзер не успел заметить появление формы
Lord Warlock (2003-01-24 09:17:00) [5]А можно проще:
procedure TForm1.Button1Click(Sender: TObject);
begin
Form2.Show;
end;
procedure TForm2.FormActivate(Sender: TObject);
begin
if Чего-то там then
PostMessage(Handle,WM_CLOSE,0,0);
end;
Anatoly Podgoretsky (2003-01-24 09:16:00) [6]Зачем же вызываешь если тебе не нужна форма, ты сначала проверь и только потом Show.
К тому же ты плохо представляешь работу OnActivate, твое утверждение насчет "форма еще не появилась." верно только частично.
Reindeer Moss Eater (2003-01-24 09:11:00) [7]procedure DoHide(var Msg:TMessage); message wm_user+100;
procedure TForm2.DoHide(var Msg: TMessage);
begin
Close;
end;
procedure TForm2.FormActivate(Sender: TObject);
begin
PostMessage(Handle,wm_user+100,0,0);
end;