Delphi XE5无法触发空格键
在Delphi XE5中,当使用FormKeyUp或KeyDown方法时,空格键无法触发 如果使用空格键,则键值为0(而不是32)。这是在XE2上工作的Delphi XE5无法触发空格键,delphi,delphi-xe5,firemonkey-fm3,Delphi,Delphi Xe5,Firemonkey Fm3,在Delphi XE5中,当使用FormKeyUp或KeyDown方法时,空格键无法触发 如果使用空格键,则键值为0(而不是32)。这是在XE2上工作的 procedure TfrmMaster.KeyDown(var Key: Word; var KeyChar: Char; Shift: TShiftState); begin if Key = vkSpace then begin //custom handling //if SomeTest then Exit
procedure TfrmMaster.KeyDown(var Key: Word; var KeyChar: Char;
Shift: TShiftState);
begin
if Key = vkSpace then
begin
//custom handling
//if SomeTest then Exit; //don't do default handling
end;
inherited; //do default handling
end;
类型为桌面高清
目标是Windows 32/64位和Mac OS,我可以在新的FMX HD应用程序中重现您的问题。快速测试表明,
vkSpace
从未发送
- 创建新的Firemonkey HD桌面应用程序
- 在对象检查器的
选项卡上,双击Events
事件,并添加以下代码:OnKeyDown
要允许在
ShowMessage
调用后默认处理击键,只需删除KeyChar:=#0代码>我可以在新的FMX HD应用程序中重现您的问题。快速测试表明,vkSpace
从未发送
- 创建新的Firemonkey HD桌面应用程序
- 在对象检查器的
Events
选项卡上,双击OnKeyDown
事件,并添加以下代码:
要允许在ShowMessage
调用后默认处理击键,只需删除KeyChar:=#0代码>谢谢您的编辑。这使问题更加清楚。我已取消投票,并发布了答案。:)谢谢你的编辑。这使问题更加清楚。我已取消投票,并发布了答案。:)谢谢,它也在我的集合中使用KeyChar而不是Key参数。在XE2上,我取消了关键参数,它正在工作,当我在XE5中对项目提出异议时,关键参数似乎不再工作。谢谢,通过使用KeyChar而不是Key parameter,它也在我的集合中工作。在XE2上,我取消了关键参数,它正在工作,当我在XE5中否决了该项目时,关键参数似乎不再工作。
procedure TForm4.FormKeyDown(Sender: TObject; var Key: Word; var KeyChar: Char;
Shift: TShiftState);
begin
{
if KeyChar = #32 then
begin
ShowMessage('Got space bar');
KeyChar := #0;
end;
}
if Key = vkSpace then
begin
ShowMessage('Got space bar');
Key := 0;
end
else
ShowMessage('Received key ' + IntToStr(Key));
end;
procedure TForm4.FormKeyDown(Sender: TObject; var Key: Word; var KeyChar: Char;
Shift: TShiftState);
begin
if KeyChar = #32 then
begin
ShowMessage('Got space bar'); // Display message
KeyChar := #0; // Discard keystroke
end;
end;