MessageDlg不发出声音

Sam*_*ami 5 delphi delphi-10-seattle

我有以下代码:

IF MessageDlg('Delete?',mtConfirmation,[mbYes,mbNo],0) = MrYes THEN
Begin
///Do Something;
End
Else
Begin
///Do Something;
End;
Run Code Online (Sandbox Code Playgroud)

如果StyleWindowsMessageDlg功能播放声音,但如果我改StyleWindows 10了为例,然后声音不工作.

  • 选择a时为什么声音不存在Style

  • 我该如何解决这个问题?

注意:我正在使用Delphi 10 Seattle.

更新:

我试着MessageBeep(MB_ICONQUESTION);David Heffernan在他的答案中建议的那样,但这也不会发出声音.

RRU*_*RUZ 3

为了补充 David 的答案,根据您的Windows版本、当前活动样式和其他检查MessageDlg函数是使用自定义TForm或使用TTaskDialog类(这是Windows 任务对话框的包装器)实现的。因此,作为解决方法,您可以直接使用TTaskDialog类并将 Vcl.Styles.Hooks单元添加到您的项目中以设置此类对话框的样式。

uses
  Vcl.Styles.Hooks;

procedure TForm56.Button1Click(Sender: TObject);
var
 LTaskDialog : TTaskDialog;
begin
  LTaskDialog := TTaskDialog.Create(Self);
  try
    LTaskDialog.Caption := 'Confirm';
    LTaskDialog.Text := 'Delete ?';
    LTaskDialog.CommonButtons := [tcbYes, tcbNo];
    LTaskDialog.MainIcon := tdiInformation;
    if LTaskDialog.Execute then
      if LTaskDialog.ModalResult = mrYes then
      begin


      end;
  finally
    LTaskDialog.Free;
  end;
Run Code Online (Sandbox Code Playgroud)