Delphi 按下OSX上的enter键时发出Firemonkey声音

Delphi 按下OSX上的enter键时发出Firemonkey声音,delphi,Delphi,使用DelphiXE8,Firemonkey多设备窗体 在为密码输入设置的标准TEdit中,当用户按enter键(在OSX上)时,我无法停止默认警报声音,Windows工作正常 我已尝试在KeyDown和KeyUp事件中设置以下内容: procedure TfrmMain.txtPasswordPromptKeyUp(Sender: TObject; var Key: Word; var KeyChar: Char; Shift: TShiftState); begin if (Key =

使用DelphiXE8,Firemonkey多设备窗体

在为密码输入设置的标准TEdit中,当用户按enter键(在OSX上)时,我无法停止默认警报声音,Windows工作正常

我已尝试在KeyDown和KeyUp事件中设置以下内容:

procedure TfrmMain.txtPasswordPromptKeyUp(Sender: TObject; var Key: Word; var KeyChar: Char; Shift: TShiftState);
begin
  if (Key = vkReturn) and (btnPasswordPromptGo.Tag = 0) then begin
    Key := vkNone;
    KeyChar := #0;
    btnPasswordPromptGoClick(sender);
  end;
end;

procedure TfrmMain.txtPasswordPromptKeyDown(Sender: TObject; var Key: Word; var KeyChar: Char; Shift: TShiftState);
begin
  if (Key = vkReturn) and (btnPasswordPromptGo.Tag = 0) then begin
    Key := vkNone;
    KeyChar := #0;
  end;
end;

声音仍然在OSX上播放。有人知道如何停止吗?

不要使用
vknone
作为键值,只需将结果设置为0即可。这应该可以防止哔哔声

procedure TfrmMain.txtPasswordPromptKeyDown(Sender: TObject;
  var Key: Word; var KeyChar: Char; Shift: TShiftState);
begin
  if (Key = vkReturn) and (btnPasswordPromptGo.Tag = 0) then begin
    Key := 0;
  end;
end;

正如Rob所提到的,您可以将您希望在遇到return时执行的按钮的默认属性设置为true。如果您这样做,就不需要占用回车符的代码。

在VCL应用程序中,您不需要编写任何代码。您只需将OK按钮上的
Default
属性设置为true。FMX不是这样工作的吗?哇,在使用Cancel和Default属性的这么多年中,我从未意识到它也能阻止文本框发出默认的嘟嘟声!谢谢,行得通。结果我忽略了这一点,因为我使用的是一个没有默认属性的TCornerButton,但我可以将它更改为一个TButton。是的,这是我最初尝试的。它适用于Mac上的Windows和模式窗体,但不适用于主窗体。不过,默认属性确实有效。