El MessageDlg te va a detener la ejecución. Utiliza un timer:
Código Delphi
[-]
procedure TForm1.Button1Click(Sender: TObject);
var
b:Boolean;
begin
Timer1.Enabled := true;
b := (MessageDlg('Welcome to my Object Pascal application. Exit now?', mtConfirmation, [mbOk], 0) = mrOk);
if (b) then begin
Timer1.Enabled := False;
end;
end;
procedure TForm1.Timer1Timer(Sender: TObject);
begin
MessageBeep(word(-1));
Beep();
Application.ProcessMessages;
end;
Por defecto en Enabled del timer a FALSE.