Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 23.08.2010, 23:12   #1
Borgond
 
Аватар для Borgond
 
Регистрация: 23.08.2010
Сообщений: 5
Вопрос Закрытие окна при нажатии опр. клавиши на клавиатуре.

Здравствуйте!

Меня зовут Владимир. Я создал форму, которую хочу закрыть при нажатии клавиши "Esc" - это 27 клавиша на клавиатуре.
В итоге:
"procedure TForm1.FormKeyPress(Sender: TObject; var Key: Char);
begin
if key=#27 then form1.Close;
end;
" - НЕ ЗАКРЫВАЕТ.

Попробовал такую же систему с ListBox:
"procedure TForm1.ListBox1KeyPress(Sender: TObject; var Key: Char);
begin
if key=#27 then form1.Close;
end;
" - ПОЛУЧИЛОСЬ.

Но для того чтобы код среагировал, мне нужно дать фокус ЛистБоксу, а я хотел чтобы он сразу закрывался без дачи кому-либо фокуса.

Может кто-нибудь подсказать как так сделать????

Заранее благодарен.

Последний раз редактировалось Borgond; 24.08.2010 в 09:26.
Borgond вне форума Ответить с цитированием
Старый 23.08.2010, 23:13   #2
DIgorevich
Погулять вышел
Участник клуба
 
Аватар для DIgorevich
 
Регистрация: 17.05.2010
Сообщений: 1,573
По умолчанию

Ну выбери, к примеру, procedure TForm1.ListBox1KeyPress и в обработчике FormKeyPress
Никогда не знаешь, где тебе повезет... (Фрай)
DIgorevich вне форума Ответить с цитированием
Старый 23.08.2010, 23:26   #3
W0LF
Форумчанин
 
Аватар для W0LF
 
Регистрация: 28.03.2008
Сообщений: 940
По умолчанию

Цитата:
Код:
procedure TForm1.FormKeyPress(Sender: TObject; var Key: Char);
begin
if key=#27 then form1.Close;
end;
- НЕ ЗАКРЫВАЕТ.
А у меня закрывает...
W0LF вне форума Ответить с цитированием
Старый 23.08.2010, 23:34   #4
spamer
Software Developer
Старожил
 
Аватар для spamer
 
Регистрация: 19.12.2008
Сообщений: 2,070
По умолчанию

Странно, все работает..ну можете еще попробовать вот так:
Код:
procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
if Key = 27 then Close;
end;
Будь проще и люди к тебе потянутся
spamer вне форума Ответить с цитированием
Старый 24.08.2010, 09:34   #5
Borgond
 
Аватар для Borgond
 
Регистрация: 23.08.2010
Сообщений: 5
Лампочка

Спасибо за ответы.

Цитата:
Ну выбери, к примеру, procedure TForm1.ListBox1KeyPress и в обработчике FormKeyPress
Я по моему так и сделал:
Цитата:
"procedure TForm1.FormKeyPress(Sender: TObject; var Key: Char);
begin
if key=#27 then form1.Close;
end;" - НЕ ЗАКРЫВАЕТ.
Цитата:
А у меня закрывает...
Хммм, странно ....

Цитата:
Странно, все работает..ну можете еще попробовать вот так:
Код:

Цитата:
procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if Key = 27 then Close;
end;
Пробовал, не помогло. Разница здесь лишь в том, что при "KeyPress" действие произойдёт только после отпуская клавиши, а при "KeyDown" сразу при нажатии. Вроде так.
Borgond вне форума Ответить с цитированием
Старый 24.08.2010, 10:04   #6
Sibedir
Тот ещё
Старожил
 
Аватар для Sibedir
 
Регистрация: 14.11.2007
Сообщений: 2,242
По умолчанию

Код:
procedure TForm1.FormCreate(Sender: TObject);
begin
  KeyPreview := True;
end;
Sibedir вне форума Ответить с цитированием
Старый 25.08.2010, 01:14   #7
Borgond
 
Аватар для Borgond
 
Регистрация: 23.08.2010
Сообщений: 5
Лампочка Уряяяя! :)

Цитата:
Сообщение от Sibedir Посмотреть сообщение
Код:
procedure TForm1.FormCreate(Sender: TObject);
begin
  KeyPreview := True;
end;
Огромное спасибо!
Я как раз думал, "может он просто не видит моего кода, ну т.е. нет возможности его выполнить, запрещено например?!".
Ещё раз спасибо тебе!!!
Borgond вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
завершение цикла при нажатии клавиши LLIyPI/IK Общие вопросы C/C++ 8 12.02.2010 13:29
Обновление заданной области экрана при нажатии клавиши Jack Torrance Win Api 3 26.05.2008 10:57
Событие при нажатии клавиши Enter Inbox Общие вопросы Delphi 4 12.06.2007 14:18