Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

закрытие программы


ymin ©   (2002-04-17 17:36:00) 

Как сделать, чтобы при нажатии на x в правом верхнем углу какой-нибудь формы проекта, закрыть всю программу?


Song   (2002-04-18 08:33:00) [1]

Тока не забывайте, что могут быть открыты другие формы.. Иногда если закрыть MainForm, они могут оставаться, встречался я с этим. Здесь решение одно - закрывайте все остальные формы, а потом - главную. Я делал так, когда нужно было закрыть клиента удалённо.


kull   (2002-04-17 23:24:00) [2]

Да чего вымахиваться, Song прав: MainForm.Close, и неча мудрить,
Halt-ы какие-то. Вы еще Windows перезапустите, чтоб неповадно было окна закрывать. :)


Agent Smith   (2002-04-17 18:56:00) [3]

Можно так: обрабатываем событие возможности закрытие формы и в нем прописываем закрытие осталбных окон.


Андрей Сенченко   (2002-04-17 18:33:00) [4]

Я например совсем по-другому поступил бы : открывал бы модальной ту форму, с закрытия которой по "х в углу" нужно гасить программу. А по нужному ModalResult - повесил бы процедурку закрытия, которая спокойно погасит все созданные объекты и процессы и закроет программку, предварительно спроси о такой необходимости.


Song   (2002-04-17 18:30:00) [5]

MainForm.Close освобождает все автоматически созданные объекты. Те объекты, которые создали Вы, Вы и должны удалить. Если Вы это забыли сделать, за Вас это сделает система.
Если быть точным то MainForm.Close вызывает Application.Terminate но не Halt!!!! Terminate же генерирует PostQuitMessage с кодом 0. А это уже функция АПИ.


Андрей Сенченко   (2002-04-17 18:24:00) [6]

>> Song © (17.04.02 18:09)

Ответ Безумной Рыбы - конечно не ответ Мудрого Оленя ...
Но полностью соответствует ответу.

Кстати.. интересный вопрос возникает : MainForm.Close освободит ли ВСЮ память и уничтожит ли ВСЕ объекты ?


Song   (2002-04-17 18:09:00) [7]

Halt завершает работу, но не уничтожает ни одного созданного объекта, передавая эту задачу на командный процессор. Если Вы используете такие методы, то хотя бы не советуйте другим.


-=CrazyFish=-   (2002-04-17 18:05:00) [8]

Кто скажет, что Halt не завершит работу приложения пусть первый бросит в меня камень ;)


Song   (2002-04-17 17:58:00) [9]

2-=CrazyFish=- © (17.04.02 17:50)
Я Вам дам "halt"!

2ymin © (17.04.02 17:36)
MainForm.Close или WM_CLOSE,WM_QUIT


-=CrazyFish=-   (2002-04-17 17:50:00) [10]

Application.Terminate;
а можно
Halt;


Наверх

Титульная страница Поиск, карта сайта Написать письмо