Советы по Delphi

       

Перехват курсорных клавиш I


Вы должны перехватывать и обрабатывать сообщение WM_GETDLGCODE. Объявите обработчик сообщения в вашем компоненте (в секции protected будет в самый раз)

procedure WMGetDlgCode(var Msg : TMessage); message WM_GETDLGCODE;

и реализуйте его:



procedure TMyControl.WMGetDlgCode(var Msg : TMessage);beginMsg.Result := DLGC_WANTARROWS;end;

Cheers, Julian (TeamB & TurboPower Software) [000476]


Вы можете перехватывать нажатие курсорных клавиш на уровне приложения:

Создайте HandleMessages как метод формы и затем назначьте его Application.HandleMessages.

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] ) ThenBeginCase Msg.wParam OfVK_UP : ShowMessage ( 'Нажата стрелка вверх' );VK_DOWN : ShowMessage ( 'Нажата стрелка вниз' );VK_LEFT : ShowMessage ( 'Нажата стрелка влево' );VK_RIGHT : ShowMessage ( 'Нажата стрелка вправо' );End;Handled := True;End;End;

procedure TForm1.FormCreate(Sender: TObject);
begin
Application.OnMessage := HandleMessages;end;

Надеюсь, что помог вам,
Robert Wittig [000669]



Содержание раздела