Цитата:
Сообщение от govorun
...Какой из способов закрытия программы наиболее цивилизованный: form1.Close; или Application.Terminate;?
|
Приоритеты при уничтожении формы: CloseQuery -> Close-> Deactivate -> Hide -> Destroy т.е. если просто закрыть форму посредством form1.Close(Alt+F4) сначало сгенерится событие CloseQuery и в этот момент можно например выполнить сохранение клиентских данных, либо сделать что-то ещё. У Close есть параметр Action со следующими четырьмя возможными значениями (по drkb):
caNone Закрывать форму нельзя. Всё равно, что установить CanClose:= false в OnCloseQuery.
caHide Вместо закрытия, форма будет скрыта.
caFree Форма будет закрыта, и занятые ей ресурсы будут освобождены.
caMinimize Вместо закрытия, форма будет минимизирована. Это значение устанавливается поумолчанию у дочерних форм MDI.
При вызове Application.Terminate некоторых событий не наступает, поэтому лучше использовать form1.Close, причём глобальная Application отслеживает что закрывается: если не главная форма, то выполняется form.hide, а если главная, то завершается всё приложение