Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Общие вопросы > Закрытие окна по esc


Автор: BreakMeThunder 21.5.2006, 18:23
Люди!
Почему форма, которая вызывается как showmodal и содержит много компонентов не закрывается по нажатию Esc???
Заранее спасибо! 

Автор: Poseidon 21.5.2006, 18:27
Код
procedure TForm2.FormCreate(Sender: TObject); 
begin 
  Form2.KeyPreview := True; 
end; 

procedure TForm2.FormKeyPress 
  (Sender: TObject; var Key: Char); 
begin 
  if key = #27 then Close; 
end; 
 

Автор: BreakMeThunder 21.5.2006, 18:39
Помогло, благодарю! 

Автор: Yanis 21.5.2006, 21:44
Цитата(BreakMeThunder @  21.5.2006,  19:23 Найти цитируемый пост)
Почему форма, которая вызывается как showmodal и содержит много компонентов не закрывается по нажатию Esc???

Потому что программирование под Windows - событийное программирование. Хочешь действие - обрабатывай событие. В твоём случае (и Poseidon тебе уже написал пример) это событие нажатия клавиши Esc. 

P. S. Хотя скан код клавиши Ecs знают практически все программисты, советую пользоваться константами из модуля Windows, а в частности VK_ESCAPE. 

Автор: BreakMeThunder 21.5.2006, 22:45
Трудность была не с обработкой событий, а с вот этим   Form2.KeyPreview := True; 
Цитата

P. S. Хотя скан код клавиши Ecs знают практически все программисты, советую пользоваться константами из модуля Windows, а в частности VK_ESCAPE. 

А зачем? 

Автор: Poseidon 21.5.2006, 22:48
Цитата(Yanis @  21.5.2006,  21:44 Найти цитируемый пост)
советую пользоваться константами из модуля Windows, а в частности VK_ESCAPE.  
   VK_ESCAPE = 27;. Какая разница, написать 
Код
if key = #27 then Close;
 или 
Код
if key = VK_ESCAPE then Close;
??? 

Автор: Yanis 21.5.2006, 23:03
Конечно компилятору и ОС никакой разницы, но так проще читать текст программы. Вообще использование констант  вместо числовых значений хороший тон программирования. 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)