我无法弄清楚如何捕捉删除键按下。
我发现在ASCII码表中,它位于127位,但if (Key = #127) then
让我无处可去。
然后我检查了VK_DELETE
的值为47.试图使用它,但它没有用。
KeyPreview := true
已在我的表单中设置。
我尝试将ShowMessage(IntToStr(Ord(Key)))
添加到Forms KeyPress事件中,但是在点击 Delete 键时我从未收到消息弹出。
我需要在动态创建的编辑字段中处理删除键。我想控制文本用户可以在该字段中删除的部分,我知道如何使用 Backspace 键处理文本删除,现在需要弄清楚如何使用删除 key。
由于
答案 0 :(得分:12)
您应该处理OnKeyDown
而不是OnKeyPress
事件。如果你这样做,那么VK_DELETE
应该适合你。请注意,OnKeyDown
和OnKeyUp
的参数为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;