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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 21.05.2009, 21:53   #1
Juffin
Форумчянин
Форумчанин
 
Аватар для Juffin
 
Регистрация: 05.04.2009
Сообщений: 446
По умолчанию фокус и нажатие кнопок на клавиатуре

когда на форме находится кнопка, то, нажимая на стрелку клавиатуры, события onKeyDown на стрелку не обрабатывается, а выделение скачет с одной кнопки на другую. как сделать так, чтобы обрабатывалось нажатие, а не передвигался фокус выделения?
Nobody expects Spanish Inquisition!
Juffin вне форума Ответить с цитированием
Старый 21.05.2009, 22:16   #2
Air
Участник клуба
 
Аватар для Air
 
Регистрация: 30.04.2007
Сообщений: 1,307
По умолчанию

Св-во KeyPreview в true
OnKeyDown - обрабатывает нажатие.
Нужно только найти код клавиши, например так showmessage(inttostr(key));
Всё гениальное - просто!
Air вне форума Ответить с цитированием
Старый 21.05.2009, 22:40   #3
Juffin
Форумчянин
Форумчанин
 
Аватар для Juffin
 
Регистрация: 05.04.2009
Сообщений: 446
По умолчанию

да я не про это. у меня стоит событие на нажатие стрелки, а оно не срабатывает, но перескакивает с обной кнопки на другую выделение.
Nobody expects Spanish Inquisition!
Juffin вне форума Ответить с цитированием
Старый 21.05.2009, 23:03   #4
DeKot
Участник клуба
 
Аватар для DeKot
 
Регистрация: 12.08.2008
Сообщений: 1,977
По умолчанию

Код в студию.
И не сомневайся даже ... отдых - кайф, работа - лажа!
DeKot вне форума Ответить с цитированием
Старый 22.05.2009, 09:52   #5
Juffin
Форумчянин
Форумчанин
 
Аватар для Juffin
 
Регистрация: 05.04.2009
Сообщений: 446
По умолчанию

да при чем тут код? чтобы понять проблему, создайте новую форму с двумя кнопками и картинку, которая двигается при нажатии на стрелки.
Nobody expects Spanish Inquisition!
Juffin вне форума Ответить с цитированием
Старый 22.05.2009, 10:16   #6
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
да при чем тут код?
Приложи архив всего прокта. Может в свойствах формы накосячено.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 22.05.2009, 10:52   #7
Gorychev
Участник клуба
 
Аватар для Gorychev
 
Регистрация: 08.03.2008
Сообщений: 1,537
По умолчанию

Можно отлавливать событие WM_KeyDown и проверять нажата ли одна из клавиш стрелок (VK_UP, VK_DOWN, VK_LEFT, VK_RIGHT)

Код:
procedure TForm1.HandleMessages(var Msg: tMsg; var Handled: Boolean);
begin
if (Msg.Message = WM_KeyDown) and
   (Msg.wParam in [VK_UP, VK_DOWN, VK_LEFT, VK_RIGHT]) then
begin

   case Msg.wParam of
     VK_UP: caption:='Нажата стрелка вверх';
     VK_DOWN: caption:='Нажата стрелка вниз';
     VK_LEFT: caption:='Нажата стрелка влево';
     VK_RIGHT: caption:='Нажата стрелка вправо';
   end;
   Handled := true; // true - фокус не передается, false - передается
end;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
Application.OnMessage := HandleMessages;
end;
Gorychev вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Нажатие кнопок на клавиатуре Orodret Общие вопросы C/C++ 6 16.04.2009 09:06
Имитатор нажатие клавиши на клавиатуре SNUPY Общие вопросы Delphi 3 10.11.2008 21:39
Нажатие кнопок SeregaIRK Компоненты Delphi 9 18.09.2008 18:13
Отловить нажатие кнопок Sanek_ntsk Паскаль, Turbo Pascal, PascalABC.NET 2 12.03.2008 17:38
Нажатие кнопок мыши zzzzz Win Api 7 02.12.2007 12:33