Текущий архив: 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