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

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

Как закрыть модальную форму [D5, Win2k]


Diogen ©   (2002-11-14 10:59:00) 

Форму открывал так
Form5.ShowModal;
а закрываю
Form5.Close;
окошко не закрывается , при этом кнопкой закрытия окна форма нормально закрывается


Reindeer Moss Eater   (2002-11-15 16:15:00) [1]

Удобно делать так. В модуле модальной формы объявляем что-то похожее на:

function ShowMyModalForm : boolean;
begin
with TmyModalForm.Create(Application) do
try
Caption:=.....
//Инициализация чего надо
Result:= ShowModal = mrOk;
if Result then
...
else
...
finally
Free;
end;
end;


Calm   (2002-11-15 16:12:00) [2]

А нельзя запустить кучу кода без всякого окна?
Я, конечно, не владею все информацией по вопросу, но не понимаю, зачем открывать окно, если оно все равно обязательно сразу закроется?


Vint   (2002-11-15 16:09:00) [3]

>Diogen (14.11.02 10:59)

Всегда закрывал именно Close; и все работало !?!?!


Diogen   (2002-11-15 16:04:00) [4]

ну у меня куча кода отрабатывает при активации формы .
а затем как это все отпахало нужно ее закрыть


Calm   (2002-11-15 15:58:00) [5]

А зачем закрывать модальную форму при ее активации? В чем смысл?
Форма закроется сразу при появлении. В других случаях событие возникать не будет, т.к. потерять фокус форма не может (она же модальная).


Diogen   (2002-11-15 15:54:00) [6]

Ага . Работает , но как-то странно .
Есть изменяешь ModalResult в обработчике
события кнопки то все работает . а ежели
меняшь ModalResult в процедуре Form.FormActivate
то фиг

---так работает ----
procedure TForm18.SpeedButton1Click(Sender: TObject);
begin
Form18.ModalResult :=100;
end;

-----так нет---------
procedure TForm18.FormActivate(Sender: TObject);
begin
Form18.ModalResult :=100;
end;
end.


Roman_Tutov   (2002-11-14 12:06:00) [7]

сенькс . Попробую


KoluChi   (2002-11-14 11:10:00) [8]

>Calm © (14.11.02 11:04)
Извини просмотрел.


KoluChi   (2002-11-14 11:08:00) [9]

ModalResult := mrNone;


Calm   (2002-11-14 11:05:00) [10]

Skier совершенно прав. Я отвечал, не видя его сообщения.


Skier   (2002-11-14 11:04:00) [11]

>Diogen
Дело в том что Form5.Close не будет
отрабатываться то тех пор пока не отработает функция
Form5.ShowModal (т.к. форма будет модальной)

Обычно с модальными формами поступают
примерно так :

1)

Form5 := TForm5.Create(...);
try
Form5.ShowModal;
finally
FreeAndNil(Form5);
end; //try


2)


Form5 := TForm5.Create(...);
try
if Form5.ShowModal = mrOK then begin
//your code goes here...
end; //if
finally
FreeAndNil(Form5);
end; //try


Calm   (2002-11-14 11:04:00) [12]

А зачем закрывать Form5.Close? Тем более, если кнопкой закрытия нормально закрывается?

Вообще, модальное окно нужно/можно закрывать
ModalResult:=<то, что нужно>


Наверх

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