问题:
  窗口上有几个Button按钮,当其中一个得到焦点时,我用上下左右键,它会移动到上一个,或下一个按钮上。现在我想把这几个键屏蔽掉,换成我自己有事件!如何?我重载WndProc也不行:
procedure TACdFrm.Wndproc(var Message:TMessage);
var
ccode:Word;
begin
  Case Message.Msg of
   WM_KEYUP,WM_KEYDOWN:
    begin
      //Do some things
      exit;
    end;
    inherited Wndproc(Message);
end;

解决方案 »

  1.   

    简单的方法,可以通过onkeydown里面检查是上下键就abort , 也可以封装到控件里面去
      

  2.   

    private
       procedure OnMessage(var Msg: tagMSG; var Handled: Boolean);procedure TForm1.OnMessage(var Msg: tagMSG;
      var Handled: Boolean);
    begin
      if (Msg.message = WM_KEYDOWN) or (Msg.message = WM_KEYUP) then
       begin
         //Do some things
         Handled := True;
       end
    end;procedure TForm1.FormCreate(Sender: TObject);
    begin
      Application.OnMessage := OnMessage;
    end;