![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Диномическое создать и убить форму. [D7, WinXP]
Дмитрий_05 © (2005-11-28 19:40:00)У меня в проекте находится две вормы, основная(Form1) автоматически создается, а вторая(Form2) по нажатию кнопки..
Form2 := TForm2.Create(Application);
Form2.Show;
форма создается, пока все нормально...
во второй форме по нажатию там на кнопку она закрывается и убивается:
Form2.Close;
Form2.Free;
и тут выскакивает ошибка "Control has not parent window", если убрать строку Form2.Free; то все нормально, но как убивать форму тогда непонятно...
Юрий Зотов (2005-11-28 20:23:00) [21]> Дмитрий_05 (28.11.05 19:40)
1. Переменную Form2 - убрать совсем. Раз эта форма показывается немодально, то ничто не мешает юзеру создать их несколько, а переменная Form2 будет указывать лишь на последнюю форму. Если нужно хранить ссылки на созданные формы - храните их в TList или в массиве, но только не в скалярной переменной.
2. Free тоже убрать. Вместо этого в обработчике OnClose второй формы пропишите Action := caFree, тогда форма при закрытии уничтожит сама себя. Если будете хранить список ссылок, то не забудь те при этом удалить ссылку из списка.
Дмитрий_05 (2005-11-28 20:11:00) [22]P.S. на событие FormClose второй формы, а не первой :)
Дмитрий_05 (2005-11-28 20:09:00) [23]а как тогда быть? вызывалась бы она как ShowModal, то Form2.Free; можно после него поставить... а тут нет... может в событии FormClose? там можно? или еще где?
Zeqfreed (2005-11-28 19:48:00) [24]Дмитрий_05 (28.11.05 19:40)
Free method (TObject)
Warning:Never explicitly free a component within one of its own event handlers or the event handler of a component it owns or contains. For example, don’t free a button, or the form that owns the button, in its OnClick event handler. (C) Delphi Help