![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как закрыть модальную форму [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:=<то, что нужно>