Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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.065 c
14-101448
Cobalt
2002-10-04 12:20
2002.10.31
Настройка компа с двумя сетевухами


3-101130
uat
2002-10-10 13:56
2002.10.31
Как открыть БД FoxPro в Delphi ? (спрашивает пароль)


7-101531
Егор
2002-08-23 15:17
2002.10.31
Как с помощью CreateProcess сделать процесс невидимым?


6-101427
chainik_ukr
2002-08-29 12:46
2002.10.31
Даеш интерне?


7-101532
Автответчик
2002-08-21 16:28
2002.10.31
Как программно позвонить через модем и сказать стандартную фразу?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский