加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

delphi – MessageDlg不发出声音

发布时间:2020-12-15 09:31:45 所属栏目:大数据 来源:网络整理
导读:我有以下代码: IF MessageDlg('Delete?',mtConfirmation,[mbYes,mbNo],0) = MrYes THENBegin///Do Something;EndElseBegin///Do Something;End; 当Style为Windows时,MessageDlg函数播放声音,但如果我将样式更改为Windows 10,则声音不起作用. 为什么选择伴奏
我有以下代码:

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

当Style为Windows时,MessageDlg函数播放声音,但如果我将样式更改为Windows 10,则声音不起作用.

>为什么选择伴奏时声音不存在?
>我该如何解决这个问题?

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

更新:

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

解决方法

为了补充David的答案,根据您的Windows版本,当前活动样式和其他检查MessageDlg函数是使用Custom TForm或使用TTaskDialog类(这是 Windows Task Dialog的包装器)实现的.因此,作为解决方法,您可以直接使用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;

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读