如果我理解正确,KeyDown事件无法阻止字符键(空格)传递给控件。
但是KeyPress事件并没有告诉我Ctrl是否已关闭。
但是如果Ctrl关闭,我只需要取消空格。
如果ctrl也已关闭,如何阻止编辑控件接收空格键?
目的:我有一个文本框,我正在从中提出搜索建议。我想使用快捷键ctrl + space弹出建议。但在这种情况下,我不想在编辑文本中添加空格。
答案 0 :(得分:5)
KeyPress事件不会告诉我Ctrl是否已关闭。
不,但您可以使用Win32 GetKeyState()
功能。
如果ctrl也已关闭,如何阻止编辑控件接收空格键?
像这样:
procedure TForm58.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
if (Key = ' ') and (GetKeyState(VK_CONTROL) < 0) then
begin
Key := #0;
// do something...
end;
end;
答案 1 :(得分:1)
我有一个文本框,我正在从中提出搜索建议。我想使用快捷键ctrl + space弹出建议。但在这种情况下,我不想在编辑文本中添加空格。
例如,使用附加到操作的快捷方式处理 CTRL + SPACE 输入。这样处理密钥将无法到达编辑控件。