我想在的做法是在窗口的几个可能会获得焦点的控件(按钮,输入框...)上面都定义上
 OnKeyPress事件,然后在OnKeyPress上判断如果按下的键是Esc键,则将当前窗口关闭。
这种办法我觉得比较笨,有没有办法统一的截获键盘事件,然后做相应处理?谢谢!

解决方案 »

  1.   

    procedure TForm1.FormCreate(Sender: TObject);
    begin
       form1.KeyPreview:=true;
    end;procedure TForm1.FormKeyPress(Sender: TObject; var Key: Char);
    begin
      if key=#27 then
      close;
    end;
      

  2.   

    Form1.KeyPreview:=true;procedure TForm1.FormKeyUp(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    begin
      if Key=27 then
        Close;
    end;
      

  3.   

    Form1.KeyPreview:=true;procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    begin
      if Key=27 then
        Close;
    end;
      

  4.   

    在窗体中放一个ApplicationEvents控件,然后在其OnMessage实践中写如下代码if (Msg.Message=WK_KEYDOWN ) and (Msg.wParam=VK_ESC) then
      Close;