iAlexander |
Отправлено: 09.11.2004, 16:11 |
|
Дежурный стрелочник
Группа: Участник
Сообщений: 70
|
Здравствуйте.
Не знает ли кто механизма, позволяющего мне выполнить следующую вещь:
CODE |
// создавать экземпляр необходимой формы
// в необходимый момент времени (окно сразу отобразится)
TNeedForm *NewForm = new TNeedForm(0);
|
Здесь память выделяется. Можно ли придумать схему, когда после закрытия окна, соответствующего экземпляру нашего TNeedForm, этот объект автоматически удалялся из памяти.
Можно сделать просто:
CODE |
// создавать экземпляр необходимой формы (он сразу отобразится)
// в необходимый момент времени
TNeedForm *NewForm = new TNeedForm(0);
NewForm->ShowModal();
delete NewForm;
|
Недостаток в том, что форма-то модальная. И я не смогу нажатием на одну и ту же кнопку показать две такие формы, т.к. после отображения первой эта кнопка окажется недоступной.
Мне ничего в голову кроме создания списка созданных форм, оповещения этого списка при закрытии формы, и по таймеру удаления объекта, в голову не идет. Но сложновато, и не нравится мне здесь идея с таймером. Ну вот мало ли какие системы у клиентов. Может, закрываться окно будет 0,05 сек, а может, 5 мин.
Есть у кого-то светлые мысли? |
|
Guest |
Отправлено: 09.11.2004, 16:38 |
|
Не зарегистрирован
|
Для освобождения памяти у метода Close есть специальный параметр |
|
Konstantine |
Отправлено: 09.11.2004, 16:43 |
|
Мастер участка
Группа: Модератор
Сообщений: 545
|
В ONClose или CloseQuery есть параметр CloseAction его в caFree установи и выходи из обработчика, и форма удалится
|
|
iAlexander |
Отправлено: 09.11.2004, 17:38 |
|
Дежурный стрелочник
Группа: Участник
Сообщений: 70
|
Спасибо. Это я явно проморгал. Чтобы Билдер, да не имел таких средств... Нужно было самому поискать. Насчет автоматического показа — это я тоже поторопился (пробовал вчера поздно вечером, а сегодня по памяти вспоминал, чего там делал, и забыл, что я ставил Show() )
CODE | void __fastcall TForm1::FormClose(TObject *Sender, TCloseAction &Action)
{ Action = caFree; }; |
Кстати, админам: время на серваке переведите
Отредактировано iAlexander — 09/11/2004, 18:46 |
|
|