Ваш код корректен и должен работать как ожидалось. Установка параметра Form1.KeyPreview в значение True говорит форме обрабатывать все вводы клавиатуры, включая нажатия клавиш, которые обычно обрабатываются другими элементами формы.
Метод обработки события FormKeyPress проверяет, является ли нажатой клавишей клавишей Escape (#27) и закрывает форму в случае положительного ответа.
Однако есть несколько вещей, которые вы можете сделать для улучшения вашего кода:
Вместо использования жесткого кодирования ASCII-значения клавиши Escape (#27), вы можете использовать константу VKEY_Escape из модуля Windows. Это делает ваш код более читаемым и упрощает его обслуживание.
Вы также можете добавить обработку ошибок, чтобы форма закрывалась только при нажатии клавиши Escape, а не при любом другом вводе.
Если вы хотите закрыть форму немедленно без ожидания выполнения любых pending операций, вам нужно вызвать Application.Terminate вместо просто Close.
Вот обновленная версия вашего кода с этими предложениями:
procedure TForm1.FormCreate(Sender: TObject);
begin
Form1.KeyPreview := True;
end;
procedure TForm1.FormKeyPress(Sender: TObject; var Key: Char);
begin
if (Key = #27) or (Key = VK_Escape) then
Application.Terminate;
end;
В этом коде VK_Escape - константа из модуля Windows, представляющая клавишу Escape. Мы используем ее для улучшения читаемости и обслуживания кода.
Также мы проверяем, является ли нажатой клавишей либо #27, либо VK_Escape. Это обеспечивает закрытие формы только при нажатии клавиши Escape, а не при любом другом вводе.
Наконец, мы вызываем Application.Terminate вместо просто Close для немедленного закрытия приложения.
Для закрытия формы при нажатии кнопки Esc в Delphi необходимо установить свойство формы KeyPreview в True и отлавливать код клавиши 27 (отображаемый как #27) в процедуре FormKeyPress.
Комментарии и вопросы
Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS
Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.