KeyDown KeyPress难题 - 如何在Ctrl +空格中取消空格

Eri*_*c G 0 delphi delphi-xe4

如果我理解正确,KeyDown事件不能阻止字符键(空格)传递给控件.

但KeyPress事件并没有告诉我Ctrl是否已关闭.

但是如果Ctrl关闭,我只需要取消空格.

如果ctrl也关闭,如何阻止编辑控件接收空格键?

目的:我有一个文本框,我正在从中提出搜索建议.我想使用快捷键ctrl + space弹出建议.但在这种情况下,我不想在编辑文本中添加空格.

Rem*_*eau 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;
Run Code Online (Sandbox Code Playgroud)