- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
procedure TMainForm.ApplicationEventsShortCut(var Msg: TWMKey;
var Handled: Boolean);
begin
if msg.CharCode <> vk_F11 then
exit;
raise Exception.Create('Вы хотите выйти из программы?');
end;
procedure TMainForm.ApplicationEventsException(Sender: TObject;
E: Exception);
begin
if Application.MessageBox(pchar('Произошла ошибка:'#13#10 + e.Message
+
#13#10'Нажмите Retry продолжить работу c программой.'#13#10'Нажмите Сancel чтобы завершить работу программы.'),
'Ошибка', MB_RETRYCANCEL or MB_ICONINFORMATION or MB_SYSTEMMODAL) =
ID_CANCEL then try
MainData.MainDataBaseBeforeDisconnect(nil);
Close;
finally
Application.Terminate;
end;
if not CaptureError(E) then
Close;
end;
предыдущий автор одного проекта таким вот нетривиальным образом сделал подтверждение выхода из программы. так понравилось, что не стал убивать, просто закомментарил. сейчас весть этот код заменен одной строчкой в OnCloseQuery.
поясню, на всякий случай. по нажатию F11 поднимается эспепшен "Вы хотите выйти из программы?", этот экспепшен перехватывается на уровне TApplication, выводится сообщение "Произошла ошибка: "Вы хотите выйти из программы?"" с педалями "Retry" и "Cancel", и при нажатии на отмену прога тупо рубиться по Application.Terminate.
непростое детство было у песателя, по ходу.