Закрытие формы
Автор: Marco Cantu (Марко Кэнту), из книги Mastering Delphi 6 (Delphi 6 для профессионалов)

Когда вы закрываете форму, используя метод Close, или одним из традиционных способов (комбинация клавиш Alt+F4, команда системного меню или кнопка Close), генерируется событие OnCloseQuery. В рамках обработчика данного события вы можете предложить пользователю подтвердить закрытие формы, в особенности, если в форме присутствуют несохраненные данные. Вот простая схема кода, которую вы можете использовать:

procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
if MessageDlg ('Are you sure you want to exit?', mtConfirmation,
[mbYes, mbNo], 0) = idNo then
CanClose := False;
end;

Если событие OnCloseQuery указывает на то, что форма может быть закрыта, происходит инициализация события OnClose. Третий шаг — обращение к событию OnDestroy, которое является антиподом события OnCreate и в большинстве случаев используется для освобождения памяти, занимаемой объектами, связанными с формой.
Зачем нужно промежуточное событие OnClose? В этом методе вы получаете еще один шанс предотвратить закрытие приложения, кроме того, вы можете указать альтернативный набор действий, связанных с закрытием. Метод обладает параметром Action, который передается ему по ссылке. Этому параметру можно присвоить одно из следующих значений.
caNone — закрывать форму запрещается. Это соответствует состоянию, когда параметр CanClose метода OnCloseQuery равен значению False.
caHide — форма не закрывается, а только скрывается. Данное значение имеет смысл только в случае, если в составе приложения присутствуют другие фор мы, в противном случае программа завершает работу. Данное значение является значением по умолчанию для вторичных форм, и именно по этой причине в предыдущих примерах я должен был обрабатывать событие OnClose для того, чтобы действительно закрывать вторичные формы.
caFree — форма закрывается, занимаемая ей память освобождается, и если это была главная форма приложения, приложение завершает работу. Это значение является значением по умолчанию для главной формы приложения. Данное действие следует выполнять также в случае, если вы динамически создаете несколько форм (в случае если при закрытии формы вы хотите удалить объект Windows и уничтожить соответствующий объект Delphi).
caMinimize — форма не закрывается, а только минимизируется. Это значение является значением по умолчанию для дочерних форм приложения MDI.

Используются технологии uCoz