OnKeyUp却是响应 方向键的OnkeyDown 键盘上其它键都能响应,就是4个方向键不响应,可能是什么原因?
我找了很久,程序当中没有哪个控件用了 方向键KeyDown的事件ps:新建一个delphi application,Form.Onkeydown 4个方向键应该会响应:我用
ShowMessage(IntToStr(Key)) 测试;迷糊中

解决方案 »

  1.   

    Form的KeyPreview属性设置为True了没有?
      

  2.   

    Form的KeyPreview属性设置是True
      

  3.   

    是因为你的窗体上有可获得焦点的控件,比如你窗体上就一个button控件
    你把这个控件的tabstop属性设置成false 那么在窗体最初运行的时候方向键可以响应的
    但是只要button控件得到过焦点之后就完了
    把你的需求说出来可以考虑用别的方法实现
      

  4.   

    发现原因: Delphi7 Ent 上用某些第三方控件,比如我用的MapObject 2.2 KeyDown就不响应方向键了,但是奇怪的是,也没这些控件内置方向键的功能? 算不算bug?
      

  5.   

    To 4043335()确实是因为 TMap(MapObject控件的一个类) 会获得焦点
    如果程序初始化设置它的TabStop为false,不通过鼠标等方式使其获得焦点 Form.OnKeyDown是响应方向键的, 但只要让其获得过焦点,再设置其它控件focused(Map:TMap应该失去焦点了吧?),Form.OnKeyDown又不响应方向键了 :( 而这个程序,不可能不对(Map:TMap)操作的 !郁闷
      

  6.   

    不要用Form.OnKeyDown用这个在主窗体中声明以下private过程:{------}
    procedure TMainForm.KeyListen(var Msg: TMsg; var Handled: Boolean);
    begin
    if Msg.Message = WM_KEYDOWN then
    begin
    if Msg.wParam = VK_UP then
    showmessage('UP is Pressed');
    end; 
    end;
    {------}在主窗体的OnCreate事件中加入:{------}
    Application.OnMessage := KeyListen;
    {------}程序运行期间不断接收 WM_KEYDOWN信息, 若按下的键是VK_UP,该干什么干什么