MessageDlg no ejecuta el sonido correspondiente al tipo de diálogo como lo hace Application.MessageBox, pero con un sin demasiado código podemos hacer nuestra propia version de MessageDlg que ejecute los sonidos

Haciendo que MessageDlg ejecute el sonido correspondiente

Copyright © 2000 Ernesto De Spirito

LMD-Tools 6.1 - 300+ componentes para varias tareas de desarrollo!

El método MessageBox del objeto Application ejecuta el sonido del sistema asociado con el tipo del mensaje, pero la función MessageDlg no. Si desea sonidos con MessageDlg entonces tiene que llamar a la API MessageBeep (declarada en la unidad Windows) cada vez que llame a MessageDlg, o bien usar este reemplazo para MessageDlg:

interface

uses dialogs, windows;

function MessageDlgS(const Msg: string; DlgType: TMsgDlgType;
  Buttons: TMsgDlgButtons = [mbOk]; HelpCtx: Longint = 0): Word;

implementation

function MessageDlgS(const Msg: string; DlgType: TMsgDlgType;
  Buttons: TMsgDlgButtons; HelpCtx: Longint): Word;
const
  Sonidos: array [TMsgDlgType] of integer = (
    MB_ICONEXCLAMATION, MB_ICONHAND, MB_OK,	
    MB_ICONQUESTION, MB_ICONASTERISK);
begin
  MessageBeep(Sonidos[DlgType]);
  Result := MessageDlg(Msg,DlgType,Buttons,HelpCtx);
end;
JfControls Library - para Delphi y C++ Builder