Компьютерный форум
Правила
Вернуться   Компьютерный форум > Форум программистов > Программирование под Windows > C++ Builder
Перезагрузить страницу Как избежать проблем при нажатие на клавишу tab
Ответ
 
Опции темы Опции просмотра
  (#1 (permalink)) Старый
Banan Banan вне форума
Новичок
 
Сообщений: 3
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 30.05.2006
По умолчанию Как избежать проблем при нажатие на клавишу tab - 30.05.2006, 12:23

мне необходимо сделать свой обработчик нажатия клавиши таб(т.е. можно сказать вручную писать переход от одного элемента формы к другому руками), только вот на события формы нажатия клавиш не реагирует. подскажите пожалуйста как это можно сделать.

ps с keypreview ничего не вышло, нужно перехватывать событие на еще более высоком уровне.
Ответить с цитированием
  (#2 (permalink)) Старый
Graf_L Graf_L вне форума
Member
 
Сообщений: 134
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 19.03.2005
По умолчанию 30.05.2006, 13:23

Цитирую тебе книгу Фаронова. Написана она про Дельфи, так что и код на Паскале. Думаю, как переделать под Билдер, разберешься

Цитата:
Чтобы получить все адресованные программные сообщения Windows, необходимо использовать метод HookMainWindow глобального объекта программы Application или его обработчик события OnMessage.

......

Вот как, например, можно использовать клавиши курсора для смещения изображения (квадрата) в компоненте PaintBox:
Код:
type
  TForm1 = class(TForm)
    ...............
    public:
    X, Y: Integer;
    procedure Hook(var Msg: TMsg; var Handled: Boolean);
  end;

...........

procedure TForm1.FormCreate(Sender: TObject);
begin
  Application.OnMessage := Hook;
  X := 100;
  Y := 100;
end;
    
procedure TForm1.Hook(var Msg: TMsg; var Handled: Boolean);
begin
  if Msg.Message <> WM_KEYDOWN then Exit;

  case Msg.wParam of
    VK_LEFT: .......
    VK_RIGHT: ......
    .............
  end;

  .........

  Handled := true; // Блокируем дальнейшую обработку
end;
Рисование квадратика в PaintBox я опустил..
Ответить с цитированием
  (#3 (permalink)) Старый
Graf_L Graf_L вне форума
Member
 
Сообщений: 134
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 19.03.2005
По умолчанию 30.05.2006, 13:23

Цитирую тебе книгу Фаронова. Написана она про Дельфи, так что и код на Паскале. Думаю, как переделать под Билдер, разберешься

Цитата:
Чтобы получить все адресованные программные сообщения Windows, необходимо использовать метод HookMainWindow глобального объекта программы Application или его обработчик события OnMessage.

......

Вот как, например, можно использовать клавиши курсора для смещения изображения (квадрата) в компоненте PaintBox:
Код:
type
  TForm1 = class(TForm)
    ...............
    public:
    X, Y: Integer;
    procedure Hook(var Msg: TMsg; var Handled: Boolean);
  end;

...........

procedure TForm1.FormCreate(Sender: TObject);
begin
  Application.OnMessage := Hook;
  X := 100;
  Y := 100;
end;
    
procedure TForm1.Hook(var Msg: TMsg; var Handled: Boolean);
begin
  if Msg.Message <> WM_KEYDOWN then Exit;

  case Msg.wParam of
    VK_LEFT: .......
    VK_RIGHT: ......
    .............
  end;

  .........

  Handled := true; // Блокируем дальнейшую обработку
end;
Рисование квадратика в PaintBox я опустил..
Ответить с цитированием
  (#4 (permalink)) Старый
Banan Banan вне форума
Новичок
 
Сообщений: 3
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 30.05.2006
По умолчанию 30.05.2006, 17:43

Спасибо большое
Ответить с цитированием
Ads
  (#5 (permalink)) Старый
Banan Banan вне форума
Новичок
 
Сообщений: 3
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 30.05.2006
По умолчанию 30.05.2006, 17:43

Спасибо большое
Ответить с цитированием
Ads.
Ответ

Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как в маил ру агенте сменить клавишу отправки сообщений? Osven123 Техническая поддержка 9 09.01.2009 19:22
Как избежать щелканий CppWebBrowser AZzz C++ Builder 0 03.05.2008 21:30
DBMemo, как спрятать клавишу Enter Angel5a C++ Builder 4 21.06.2006 01:04
Как программно нажать клавишу клавиатуры в любой программе Devill C++ Builder 11 04.06.2006 00:26
Как нажать клавишу для определенного окна devel0per WinAPI 10 03.04.2006 16:40
Как из программы нажать на клавишу в окне чужой программе Night's_bird Visual C++ 4 03.11.2005 17:46
Как сделать горячую клавишу Viru$ C++ Builder 1 02.05.2004 13:51
Как избежать проблем при работе с BDE drug Другие СУБД 0 18.03.2004 12:24
Как установаить корячию клавишу с помощью Label ? eduard1987 Visual Basic 1 24.01.2004 04:40
Как сделать горячую клавишу на форме Anonymous Delphi 8 01.10.2003 01:56
Как избежать OutOfMemory TNT Java 3 02.09.2003 21:12
Как избежать моргания экрана Garik Assembler 4 22.07.2002 19:51



Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.
Нardforum.ru - компьютерный форум и программирование, форум программистов