Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2004.01.29;
Скачать: [xml.tar.bz2];

Вниз

Закрытие и уничтожение форм   Найти похожие ветки 

 
dima_matrix   (2004-01-17 13:48) [0]

У меня возникла небольшая проблемка, спешу поделиться с общественностью, буду благодарен за любую помощь!
На сколько корректно удаление формы в обработчике события закрытия формы (то бишь вызов метода Destroy в теле метода OnClose). И вообще какое-то странное поведение у этого метода Destroy, при выполнении следующего фрагмента кода
LocTasks := TLocTasks.Create(nil);
LocTasks.ShowModal;
LocTasks.Destroy;
Вначале память выделяется 60К при создании формы, но после уничтожения по диспетчеру задач не видно, чтобы какая-то память освобождалась. К чему бы это?


 
alex_***   (2004-01-17 14:14) [1]

Судя по всему так работает борландовский менеджер памяти. и Напрямую в OnClose деструктор лучше не вызывать. Пости себе сообщение какое-ть или CloseAction := caFree.


 
dima_matrix   (2004-01-17 14:25) [2]

По поводу постить сообщение я уже думал, все равно боюсь без таймера не обойтись. А вот на счет CloseAction интересная идея. Спасибо!


 
alex_***   (2004-01-17 14:27) [3]

А при чем здесь таймер?


 
KSergey   (2004-01-17 14:47) [4]

Не надо вызывать Destroy напрямую
Нужно вызывать Free.
Для уничтожения формы самой себя (хотя в приведенном коде вы ведь ее и так уничтожаете, но в создавшей процедуре, что еще лучше, на мой взгляд) надо или использовать CloseAction, или вызывать метод Release. Что, впрочем, одно и то же, если посмотреть на реализацию, разве что CloseAction есть только в OnClose, а Release можно вызвать хоть когда и хоть откуда.


 
dima_matrix   (2004-01-17 15:12) [5]

По поводу таймера, постить сообщение надо будет какому то главному управляющему модулю, например главному окну приложения. Если у меня очередь приложения пуста, то обработчик этого сообщения может начаться раньше чем завершатся все действия по закрытию окна.
2 KSergey ©. Не все так просто, к сожалению. Я привел просто элементарный пример для илюстрации вопроса, поскольку я, честно говоря, не знаю и не понимаю, почему память не освобождается после вызова Destroy (может нужно Free использовать, сейчас посмотрю). В примере я привел модальное окно, при том что у него будет владелец - приложение. А на самом деле мне нужно немодальное окно и без владельца-родителя.


 
alex_***   (2004-01-17 15:19) [6]

извещай главное окно в перекрытом destroy, после inherited.

Скорее всего память освобождается ,т.е. объект разрушается, но память не возвращается в систему, как в Oracle размер БД не уменьшается после чистки.



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

Форум: "Основная";
Текущий архив: 2004.01.29;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.45 MB
Время: 0.014 c
1-93458
Taras
2004-01-16 09:54
2004.01.29
Как перезапустить мое приложение?


1-93431
oleg
2004-01-15 09:55
2004.01.29
JavaScript и Delphi


3-93348
raptorus
2004-01-04 10:10
2004.01.29
Здравствуйте, Мастера. Подскажите как перерисовывавать ячейки


11-93410
mdw
2003-05-12 11:55
2004.01.29
destructor Destroy; (освобождение ресурсов)


3-93390
pashtet
2003-12-30 14:13
2004.01.29
TtreeView





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский