捕获"删除"键

use*_*105 5 delphi keypress delphi-2009

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

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

KeyPreview := true在我的形式设置.

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

我需要Delete在动态创建的编辑字段中处理按键操作.我想控制文本用户可以在该字段中删除哪些部分,并且我知道如何使用Backspace键处理文本删除,现在需要弄清楚如何使用键来执行此操作Delete.

谢谢

mgh*_*hie 12

你应该处理OnKeyDown而不是OnKeyPress事件.如果你那样做那么VK_DELETE应该适合你.请注意,参数for OnKeyDownOnKeyUp是a Word,而不是Charas OnKeyPress.


Vil*_*nde 12

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

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

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