捕获“删除”键

时间:2010-03-06 10:28:40

标签: delphi delphi-2009 keypress

我无法弄清楚如何捕捉删除键按下。 我发现在ASCII码表中,它位于127位,但if (Key = #127) then让我无处可去。

然后我检查了VK_DELETE的值为47.试图使用它,但它没有用。

KeyPreview := true已在我的表单中设置。

我尝试将ShowMessage(IntToStr(Ord(Key)))添加到Forms KeyPress事件中,但是在点击 Delete 键时我从未收到消息弹出。

我需要在动态创建的编辑字段中处理删除键。我想控制文本用户可以在该字段中删除的部分,我知道如何使用 Backspace 键处理文本删除,现在需要弄清楚如何使用删除 key。

由于

3 个答案:

答案 0 :(得分:12)

您应该处理OnKeyDown而不是OnKeyPress事件。如果你这样做,那么VK_DELETE应该适合你。请注意,OnKeyDownOnKeyUp的参数为Word,而不是Char的{​​{1}}。

答案 1 :(得分:12)

Mghie有正确的答案,这是一个样本:

procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
   if Key=VK_DELETE then
     showmessage('Delete key was pressed');
end;

请注意,用户也可以使用剪切到剪贴板删除文本,因此您可能还需要处理它。

答案 2 :(得分:4)

您可以使用OnKeyDown事件过滤不需要的删除键:

procedure TForm1.Edit1KeyDown(Sender: TObject; var Key: Word; Shift:
    TShiftState);
begin
  if Key = VK_DELETE then begin
    Beep;
    Key:= 0;
  end;
end;