Вниз
Скачать: 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.04 c
14-1092674321
bender
2004-08-16 20:38
2004.09.05
Поделитесь мнением


1-1092996570
Ivolg
2004-08-20 14:09
2004.09.05
Длл


14-1092631028
КаПиБаРа
2004-08-16 08:37
2004.09.05
Порекомендуйте программы


1-1092890277
onix
2004-08-19 08:37
2004.09.05
Delphi 5 -> C++Builder 6


11-1080221274
user
2004-03-25 16:27
2004.09.05
Как поднять скрол в верхнюю позицию не мышкой а програмно?




   Наверх