Вниз
Скачать: CL | DM;

Корректное уничтожение форм, созданных в runtime...   Найти похожие ветки 

← →
3APA3A ©   (2004-08-20 15:03) [0]

Есть процедура
   for i := 1 to ... do TForm1.Create(nil).Show;

 В обработчике TForm1.OnClose написано
   Self.Free;

 Корректно ли здесь возвращается память?
 Просто лень возится с массивом типа TForm1 и т.д.


← →
Sandman25 ©   (2004-08-20 15:04) [1]

TForm1.Create(Application)

и не надо будет возиться.

> Корректно ли здесь возвращается память?

Нет


← →
Anatoly Podgoretsky ©   (2004-08-20 15:06) [2]

Сам себе харакири делаешь.


← →
ламер ©   (2004-08-20 15:06) [3]

Action := caFree;


← →
3APA3A ©   (2004-08-20 15:12) [4]

to Sandman25
   хорошо, создам я ее как TForm1.Create(Application).
   а как мне вызвать Free при WM_Close?

 to Anatoly Podgoretsky
   благодарю за очень содержательный ответ.


← →
Суслик ©   (2004-08-20 15:13) [5]


> 3APA3A ©   (20.08.04 15:12) [4]

ну типа [3]


← →
HSolo ©   (2004-08-20 15:15) [6]

[3] в обработчике OnClose


← →
3APA3A ©   (2004-08-20 15:16) [7]

метод Free не вызывается при Action := caFree;
 пишу
   procedure TForm1.Free;
   begin  
     MessageBox(0, "Free", nil, MB_TOPMOST);
     inherited Free;
   end;

 MessageBox не вылезает при закрытии формы из чего я делаю вывод  что Free не вызывается...


← →
Суслик ©   (2004-08-20 15:17) [8]


>  MessageBox не вылезает при закрытии формы из чего я делаю
> вывод  что Free не вызывается...

зря делаете.
Принцыпы ООП представляете?


← →
3APA3A ©   (2004-08-20 15:19) [9]

Представляю. А конкретнее?


← →
Суслик ©   (2004-08-20 15:20) [10]

ну полиформизм типа?
free не виртаульнаый метод.


← →
s999   (2004-08-20 15:21) [11]

Эх... Free не виртуальный, поэтому твой код отработает только при твоем же явном вызове. Если хочешь все-таки убедится, то вставляй в Destroy.


← →
TUser ©   (2004-08-20 15:22) [12]

Self.Close не прокатит?


← →
3APA3A ©   (2004-08-20 15:24) [13]

Да... Не виртуальный... Только сейчас удосужился посмотреть...
То есть - если я напишу Action := caFree - все будет нормально?


← →
Anatoly Podgoretsky ©   (2004-08-20 15:26) [14]

TUser ©   (20.08.04 15:22) [12]
Из самого Close :-)


← →
s999   (2004-08-20 15:26) [15]


> То есть - если я напишу Action := caFree - все будет нормально?


Да.


← →
s999   (2004-08-20 15:31) [16]


> > То есть - если я напишу Action := caFree - все будет нормально?
>
>
> Да.


Хотя, тут есть забавный момент. Если ты где-нибудь далее, в обработчиках,   напишешь:

Application.ProcessMessages;

То... можешь вернуться к ситуации с которой начал топик :))



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

Скачать: CL | DM;



Память: 0.48 MB
Время: 0.022 c
4-1090323947
TKV
2004-07-20 15:45
2004.09.05
Помогите поймать данные посылаемые из дос программы в порт LPT


1-1092724954
DK
2004-08-17 10:42
2004.09.05
RTTI


1-1092793397
race1
2004-08-18 05:43
2004.09.05
форма


8-1086791132
Тёма
2004-06-09 18:25
2004.09.05
Загразка имён .mp3 файлов в ListBox моего проигрывателя


3-1092121617
duke
2004-08-10 11:06
2004.09.05
регистрация FastReport




   Наверх