【问题标题】:Firemonkey sound when pressing enter on OSX在 OSX 上按 Enter 键时的 Firemonkey 声音
【发布时间】:2016-04-04 15:10:33
【问题描述】:

使用Delphi XE8,Firemonkey多设备形式。

在为密码输入设置的标准 TEdit 中,当用户按下回车键(在 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 上播放。有谁知道如何阻止这种情况?

【问题讨论】:

  • 在 VCL 应用程序中,您不需要编写任何代码。您只需将 OK 按钮上的 Default 属性设置为 true。 FMX 不是那样工作的吗?
  • 哇,在使用 Cancel 和 Default 属性的这些年里,我从未意识到它也会阻止来自文本框的默认哔声!谢谢,这行得通。结果我忽略了这一点,因为我使用的是没有 Default 属性的 TCornerButton,但我能够将其更改为 TButton。

标签: delphi


【解决方案1】:

不要将vknone 用作您的 Key 值,而只需将结果设置为 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 所提到的,您可以为遇到返回时要执行的按钮将 Default 属性设置为 true。如果你这样做,你应该不需要吃回车的代码。

【讨论】:

  • 是的,这就是我最初尝试的。它适用于 Windows 和 Mac 上的模态窗体,但不适用于主窗体。默认属性确实有效。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-11-16
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多