获取键盘事件 delete 请问如何写呢?

解决方案 »

  1.   

    设置 Form的KeyPreview为Trueprocedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    begin
       if key=vk_Delete  then
         showmessage('delete');
    end;
      

  2.   

    不知是不是根据按下DELETE键来处理
    在ONKEYDOWN事件中
    if key = vk_Delete then
    begin
    ...
    end
      

  3.   

    delete -> 对应为VK_DELETE,但不知道你想做什么呢?
    如果是想屏掉的话,需要Form的KeyPreview为True,别的就看你的需要了!
      

  4.   

    UP!procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    begin
       if key=vk_Delete  then
         showmessage('delete');
    end;
      

  5.   

    我现在在窗口上还有一个控件,它也有ONKEYDOWN,我运用上述方面,在窗口中的代码procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    begin
       if key=vk_Delete  then
         showmessage('delete');
    end;它不能运行呢?怎么没有提示delete呢?
      

  6.   

    在ONKEYDOWN事件中if key = vk_Delete then
    beginend;
      

  7.   

    因为form上放了控件之后,就不会获得焦点了
    所以没有触发FORM的ONKEYDOWN事件
      

  8.   

    要设置 Form的KeyPreview为True,
      

  9.   

    设置 Form的KeyPreview为Trueprocedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    begin
       if key=vk_Delete  then
         showmessage('delete');
    end;
      

  10.   

    或者在对象察看器中把这个控件的KeyDown事件指向Form的KeyDown
      

  11.   

    如何才能在form上放了控件之后,还是能触发FORM的ONKEYDOWN事件呢?
      

  12.   

    设置 Form的KeyPreview为True
      

  13.   

    回楼主
    你可以用截取消息的方法,来获得delete按键的消息。
    这样即使其他的控件也有ONKEYDOWN事情也不会影响, 得到delete按键的消息。
    最简单的实现方法可以用TApplicationEvents的onMessage方法,代码如下
    procedure TForm1.ApplicationEvents1Message(var Msg: tagMSG;
      var Handled: Boolean);
    begin
       if msg.wParam=vk_Delete then showmessage('ook')
    end;