СообЧа > База Знаний > Программирование > Delphi

Вопрос

Как закрывать программу при нажатии на клавишу Esc?

Ответ

Здесь можно придумать несколько способов:
1. Простой:
— ставите обычную кнопку или BitBtn (палитра Additional)
— назначаете ей параметр Cancel равный True
— делаете ей такой обработчик события OnClick:
Close;
— все: теперь при нажатии Escape будет выполняться код OnClick, а именно — закрытие формы.

2. Посложнее:
— у формы есть параметр KeyPreview: делаете его True.
— пишете обработчик события ДЛЯ ФОРМЫ OnKeyPress:
if (key = #27) then close;
— дело в том, что у клавиши Escape код 27, а т.к. переменная Key поступает в обработчик события типа Char, то с помощью решетки мы преобразуем число 27 в символ с кодом 27.

3. Самый сложный — будем обрабатывать сообщения (это не так уж и сложно):
— в объявлении класса вашей формы (по умолчанию TForm1) в разделе
private добавляете:
procedure ProcMess(var Msg: TWMKEYUP);
message WM_KEYUP;

этим мы определяем процедуру, которая будет реагировать на сообщение WM_KEYUP, т.е. отпущена клавиша
— в самой процедуре пишем (шаблон нам в этом случае не делают, поэтому в любом месте программы сами пишите следующее):
procedure TForm1.ProcMess(var Msg: TWMKEYUP);
begin
if (msg.CharCode = 27) then close;
end;

т.е. если код отпущенной клавиши равен 27 (Escape), то выполняем закрытие формы.

PS: Если вы не знаете, как писать обработчик события, то это значит: для компонента, для которого вы хотите описать событие, в закладке Events Инспектора Объектов ищете, например, OnClick и щелкаете 2 раза мышью на пустой (пока что) строке напротив надписи OnClick — получите шаблон процедуры, куда можете вписать свой код (или мой, который я привел здесь в качестве примеров).

Герун Данил



Copyright © 2000-2004 Сообщество Чайников
Контактная информация