繁体   English   中英

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

[英]KeyDown KeyPress Conundrum - How to cancel the Space in Ctrl + Space

如果我正确理解,则KeyDown事件无法阻止将字符键(空格)传递给控件。

但是KeyPress事件不会告诉我Ctrl是否按下。

但是我只需要在Ctrl按下的情况下取消空格。

如果ctrl也按下,如何防止编辑控件接收空格键?

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

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;

我有一个文本框,从中可以提出搜索建议。 我想使用快捷键Ctrl +空格弹出建议。 但是在这种情况下,我不想在编辑文本中添加空格。

例如,使用附加到动作的快捷方式来处理CTRL + SPACE输入。 以这种方式处理密钥将不会到达编辑控件。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM