Главная страница
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.5 MB
Время: 0.054 c
6-1088744933
Iraizor
2004-07-02 09:08
2004.09.05
Небольшой вопрос про SMTP


14-1091990751
Soft
2004-08-08 22:45
2004.09.05
И Ш К У Ш Ш Т В Е Н Н Ы Й И Н Т Е Л Л Е К Т


3-1091035657
Ceval
2004-07-28 21:27
2004.09.05
проблема с удалением записей в dbf


1-1092728227
Makhanev A.S.
2004-08-17 11:37
2004.09.05
Dsable hints in Delphi IDE Code Editor


8-1087415079
Ламо
2004-06-16 23:44
2004.09.05
BLP