Форум: "Основная";
Текущий архив: 2002.10.31;
Скачать: [xml.tar.bz2];
ВнизДинамическое создание форм Найти похожие ветки
← →
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;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.009 c