[英]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.