Здравствуйте!
Как правильно закрыть программу?
Сейчас у меня это работает так, что при нажатии крестика у формы - она сворачивается в трей, а сама кнопка закрыть реализована в PopupMenu:
procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
//не закрываем а сворачиваем в трей
CanClose := false;
TrayIcon1.Visible := true;
Form1.Visible := false;
ShowWindow(Application.Handle, SW_HIDE);
end;
procedure TForm1.FormDestroy(Sender: TObject);
begin
UnRegisterHotKey (Form1.Handle, 0);
TrayIcon1.Free;
Image1.Free;
Self.Free;
end;
procedure TForm1.N4Click(Sender: TObject); //кнопка закрыть
begin
//halt;
Application.Terminate;
end;
procedure TForm1.ApplicationEvents1Minimize(Sender: TObject); //сворачивание окна
begin
Form1.Visible := false; // Делаем форму невидимой
TrayIcon1.Visible := True; // Делаем иконку с трее видимой
end;
Вроде все работает, но при закрытии программы в windows 10 воспроизводится звуковой сигнал "Критическая ошибка", что в свою очередь наводит на мысль: "что-то я сделал не так...".
Объясните пожалуйста как сделать правильно и где моя ошибка(если оная имеется).
P.S.:
На основной форме расположены компоненты: ApplicationEvents, PopupMenu, TrayIcon, ImageList, ColorDialog, SavePictureDialog, OpenPictureDialog, IdHTTP, IdAntiFreeze, IdSSLIOHandlerSocketOpenSSL + всякие кнопки панели и т.д.
В самой программе 5 форм: основная, настройки (IdHTTP, IdSSLIOHandlerSocketOpenSS), форма авторизации, форма с редактором richedit и дополнительная форма а ля модальное окно.