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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 07.08.2009, 19:49   #1
Arkuz
Форумчанин
 
Аватар для Arkuz
 
Регистрация: 22.09.2007
Сообщений: 540
По умолчанию Закрытие окна по нажатию на Escape

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

Подскажите как закрыть окно по нажатию Esc?
В книгах не нашёл. Поиск по сайту ничего не показал.

И объясните в чём разница между KeyDown и KeyPress?

для дочерних окон

Код:
ставим keypreview в true

procedure TForm1.FormKeyPress(Sender: TObject; var Key: Char);
begin
  if key=#27 then close;
end;
РАБОТАЕТ!!!

А как тоже самое сделать для маинформ...
Заранее спасибо.

Последний раз редактировалось Arkuz; 07.08.2009 в 19:58.
Arkuz вне форума Ответить с цитированием
Старый 07.08.2009, 19:52   #2
ОДИНОЧЕСТВО В СЕТИ
Любопытная Вредина
Участник клуба
 
Аватар для ОДИНОЧЕСТВО В СЕТИ
 
Регистрация: 19.06.2009
Сообщений: 1,285
По умолчанию

если приложение свое то
Код:
procedure TForm1.applicationevents1Message(var Msg: tagMSG; var Handled: Boolean);
begin
 if Msg.message = WM_KEYDOWN then
    begin

      if Msg.wParam in [VK_ESCAPE] then
                  close;
    end;
end;
Дурь - это особая форма материи, которая не возникает ниоткуда и не исчезает никуда, а лишь переходит из одной головы в другую.
ОДИНОЧЕСТВО В СЕТИ вне форума Ответить с цитированием
Старый 07.08.2009, 19:59   #3
Arkuz
Форумчанин
 
Аватар для Arkuz
 
Регистрация: 22.09.2007
Сообщений: 540
По умолчанию

ОДИНОЧЕСТВО В СЕТИ, будте добры, расскажите, что код делает?
Arkuz вне форума Ответить с цитированием
Старый 07.08.2009, 20:01   #4
Kotofff
Участник клуба
 
Аватар для Kotofff
 
Регистрация: 11.01.2009
Сообщений: 1,917
По умолчанию

ОДИНОЧЕСТВО В СЕТИ, по-моему забыто inherited, уж если процедура обрабатывает сообщения приложения...
Arkuz, как вариант посмотри пример - там все понятно. Спрашивай.
Вложения
Тип файла: rar Ecs_Close.rar (4.3 Кб, 46 просмотров)
"Заряженному танку в дуло не смотрят" @Dekmer in WoT
Kotofff вне форума Ответить с цитированием
Старый 07.08.2009, 20:03   #5
ОДИНОЧЕСТВО В СЕТИ
Любопытная Вредина
Участник клуба
 
Аватар для ОДИНОЧЕСТВО В СЕТИ
 
Регистрация: 19.06.2009
Сообщений: 1,285
По умолчанию

Код:
procedure TForm1.applicationevents1Message(var Msg: tagMSG; var Handled: Boolean);
begin
 if Msg.message = WM_KEYDOWN then// приложение получает сообщение что клавиша нажата
    begin

      if Msg.wParam in [VK_ESCAPE] then// если это кнопка esc 
                  close;  // закрываем приложение
    end;
end;
про inherited не знаю ибо итак все работает! вот посмотрите


Цитата:
OnKeyDown - при нажатии какой-либо клавиши клавиатуры в тот момент, когда фокус ввода находится на объекте. Key - код нажатой клавиши, Shift - всё то же множество функциональных клавиш (этот параметр встречается во многих событиях).

OnKeyUp - при отпускании клавиши (антипод OnKeyDown).

OnKeyPress - при нажатии клавиши, которая печатает какой-либо символ (буква, цифра, знак). Key - уже не код клавиши, а сам символ (тип данных: Char - один символ).
Вложения
Тип файла: rar esc.rar (4.0 Кб, 30 просмотров)
Дурь - это особая форма материи, которая не возникает ниоткуда и не исчезает никуда, а лишь переходит из одной головы в другую.

Последний раз редактировалось ОДИНОЧЕСТВО В СЕТИ; 07.08.2009 в 20:18.
ОДИНОЧЕСТВО В СЕТИ вне форума Ответить с цитированием
Старый 07.08.2009, 20:18   #6
Arkuz
Форумчанин
 
Аватар для Arkuz
 
Регистрация: 22.09.2007
Сообщений: 540
По умолчанию

Kotofff, интересный метод, правда странноватый. Вообще я никогда экшнлистом не пользовался. Спасибо.

ОДИНОЧЕСТВО В СЕТИ, вам скажу то же... аппликатионэвентс тоже не пользовался, и ваш метод для меня в диковинку. Спасибо.
Arkuz вне форума Ответить с цитированием
Старый 07.08.2009, 22:24   #7
0nni
Форумчанин
 
Аватар для 0nni
 
Регистрация: 24.07.2008
Сообщений: 279
По умолчанию

ставишь KeyPreview в свойствах формы в True и вставляешь код из первого поста.
Сказал и загрустил от бесспорности своей правоты.
0nni вне форума Ответить с цитированием
Старый 08.08.2009, 12:35   #8
Yurk@
Участник клуба
 
Аватар для Yurk@
 
Регистрация: 19.12.2007
Сообщений: 1,100
По умолчанию

Arkuz, я делал так:
Код:
uses Messages;
...
procedure TaForm.edPfKodKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
case Key of
VK_ESCAPE	: Close;
VK_F4		:;
VK_F5		:;
VK_F6		:;
VK_F8		:;
VK_F12		:;
end;
end;
На форуме: Помогаю за спасибо
ICQ\Skype: Это моё личное время ...
Yurk@ вне форума Ответить с цитированием
Старый 06.02.2011, 12:50   #9
Бари
Новичок
Джуниор
 
Регистрация: 06.02.2011
Сообщений: 3
По умолчанию

скажите куда эти коды вставлять???
Бари вне форума Ответить с цитированием
Старый 06.02.2011, 14:17   #10
Vervolf
Пользователь
 
Аватар для Vervolf
 
Регистрация: 14.01.2011
Сообщений: 97
По умолчанию

Цитата:
Сообщение от Бари Посмотреть сообщение
скажите куда эти коды вставлять???
как куда?там же написано.посмотри на заголовки процедур.
Vervolf вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
По нажатию Enter Cpluser Общие вопросы .NET 4 30.04.2009 10:28
Запрет на закрытие окна Bayazet Общие вопросы Delphi 4 25.12.2008 11:29
Размер окна в зависимости от размера окна Reverent JavaScript, Ajax 1 02.02.2008 15:49
закрыть все дочерни окна, кроме главного окна Worms Общие вопросы Delphi 2 03.12.2007 22:18
Как сделать чтобы дочерние окна в MDI-приложениях были вне главного окна??? dimonchuk Общие вопросы Delphi 1 11.08.2007 12:13