Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.10.31;
Скачать: CL | DM;

Вниз

Динамическое создание форм   Найти похожие ветки 

 
Pat ©   (2002-10-22 00:48) [0]

Создаю я форму, допустим, form:=TForm.Create(self). Надо ли после ее использования делать form.free, если на событие OnClose написать action:=cafree?
Выписка из хелпа:
caFree The form is closed and all allocated memory for the form is freed.
Неужели все так просто? :-))))

P.S. Гы...ну клинит меня...с кем не бывает :-))


 
Lego ©   (2002-10-22 04:54) [1]

Хмм... интересно... я такого незнал :)
Ну с кем небывет :) век живи век цчись :)


 
Rouse_ ©   (2002-10-22 05:05) [2]

Если ты в событии OnClose сделаешь action:=cafree то форма и компоненты наследники освободятся (из памяти) не забывай, что экземпляры классов созданные в форме нужно освобождать в ручную

Желаю успехов


 
Bsl   (2002-10-22 07:53) [3]

Вообще для модальных окон пишется следующим образом:

with TForm.Create(Self) do
try
ShowModal;
if ModalResult = ... ;
finally
Free;
end;


а "action:=cafree" нужен только для дочернх MDI окон.


 
Viktor Kushnir ©   (2002-10-22 08:25) [4]

Иногда Action := caFree очень помогает. Если нужно убить окно из самого себя. По другому - сплошные AV


 
lammoth   (2002-10-22 08:59) [5]


> Иногда Action := caFree очень помогает. Если нужно убить
> окно из самого себя. По другому - сплошные AV


А Release не пробовал делать?


 
Bis   (2002-10-22 09:02) [6]

Сплошные AV получаются, когда лезешь не в ту память.

И вообще зачем передавать в конструктор Self, если форма убивает саму себя? Даже если и передавать, то обычно Application.


 
Song ©   (2002-10-22 09:14) [7]

После caFree не забудьте указатель объекта сбросить на nil


 
sen   (2002-10-22 09:42) [8]

2 bis а кто говорит, что надо передавать. Читай внимательнее


 
KSergey ©   (2002-10-22 10:37) [9]

Есть методы уничтожить форму/освободить память:

1. Free - вызывается только все методов формы (хотя и не совсем так; подробнее можно поискать на форуме - когда-то я это здесь описывал);
2. Release - можно вызвать хоть где, хоть в методе самой формы;
3.В обработчике события OnClose присвоить action:=cafree.

В итоге результат будет абсолютно одинаков, причем в случае 3 на самом деле в VCL вызывается Release, а в обработчике сообщения, посылаемого по Release, вызывается Free (причем в методе самой формы!). Впрочем, это уже детали. Важно то, что результат будет одинаков и можно выбирать по вкусу и ситуации.
Ну и не забывать о том, о чем напоминает Rouse_ © (22.10.02 05:05).

PS: надеюсь меня поправят, есл что-то забыл.


 
MegaBass ©   (2002-10-22 11:27) [10]

усли делаешь form:=TForm.Create(self) тоесть как Owner-а передаешь self, то при Owner.destroy вызываются Destroy всех компонентов которые принадлежат Owner-у.


 
KSergey ©   (2002-10-22 11:42) [11]

KSergey © (22.10.02 10:37)
Описочка как всегда у меня, но тут досадная:
1.Free - вызывается только в не методов формы...



Страницы: 1 вся ветка

Текущий архив: 2002.10.31;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.009 c
3-101098
Hlor
2002-10-09 15:40
2002.10.31
Доброго времени суток! Есть вопрос... Как осуществить


14-101465
Best Before 2024
2002-10-10 17:25
2002.10.31
Раньше было хорошо!


3-101073
zks
2002-10-11 06:32
2002.10.31
DBase Мне нужно отобрать записи через запрос


3-101057
KidMan
2002-10-10 22:20
2002.10.31
SQL параметры и дата


7-101533
Flying Bird
2002-08-26 00:40
2002.10.31
Как получить (изменить) атрибуты файла?