Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.09.05;
Скачать: 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 вся ветка

Текущий архив: 2004.09.05;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.022 c
1-1093002271
Asdweb
2004-08-20 15:44
2004.09.05
Случайный выбор.


1-1092834503
Erik1
2004-08-18 17:08
2004.09.05
Как прямо записать в структуру TMaps = set of TMap число?


3-1092212428
div
2004-08-11 12:20
2004.09.05
isc_dpb_password


1-1093035765
Adil
2004-08-21 01:02
2004.09.05
PopupMenu Items


4-1089938347
Xerx
2004-07-16 04:39
2004.09.05
Написание драйвера