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

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

Диномическое создать и убить форму. [D7, WinXP]


Страницы:   1 2

Дмитрий_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


Страницы:   1 2

Наверх

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