Skip to content

Delphi MessageDlg – Usos y secretos

Los mensajes de diálogos son extremadamente importante para la comunicación bidireccional con los usuarios.

En Delphi, las funciones para el manejo de mensajes está en la unit Dialogs, tanto para VCL como para FMX.

Con la función MessageDlg, podremos mostrar al usuario un cuadro con un dialogo (string) y uno o varios botones como respuesta, señalando a uno de ellos como el botón por defecto.

Declaración de MessageDlg

La declaración para la función MessageDlg es la siguiente:

function MessageDlg(const Msg: string; DlgType: TMsgDlgType; Buttons: TMsgDlgButtons; HelpCtx: Longint): Integer; overload;
function MessageDlg(const Msg: string; DlgType: TMsgDlgType; Buttons: TMsgDlgButtons; HelpCtx: Longint; DefaultButton: TMsgDlgBtn): Integer; overload;

Msg: en el parámetro Msg (de tipo string) enviamos el texto con el cual nos queremos comunicar con el usuario.

DlgType: En este parámetro (de tipo TMsgDlgType) indicamos a Delphi el tipo de diálogo que queremos mostrar, entre los que podemos enontrar:

  • mtWarning
  • mtError
  • mtInformation
  • mtConfirmation
  • mtCustom

Buttons: En el parámetro Buttons (de tipo TMsgDlgButtons), enviaremos los tipos de botones que queremos mostrar al usuario para que elija uno como respuesta, los tipos de botones disponibles son:

  • mbOK
  • mbCancel
  • mbYes
  • mbNo
  • mbAbort
  • mbRetry
  • mbIgnore
  • mbAll
  • mbNoToAll
  • mbYesToAll
  • mbClose

HelpCtx: De los parámetros obligatorios (de tipo longint), tenemos a HelpCtx, que especifica el ID del contexto para la ayuda que debería aparecer cuando el usuario hace clic en el botón de ayuda o presiona F1 mientras se muestra el cuadro de diálogo.

DefaultButton: Parámetro opcional (de tipo TMsgDlgButtons) que indica el botón por defecto, si colocamos mbNone no habrá ningún botón por defecto. 

Ejemplo de MessageDlg

Uses Dialogs

...

procedure TForm1.Button1Click(Sender: TObject);
begin
  if MessageDlg('Está seguro de salir del sistema?',
    mtConfirmation, [mbYes, mbNo], 0, mbYes) = mrYes then
  begin
    MessageDlg('Saliendo del sistema.', mtInformation,
      [mbOk], 0, mbOk);
    Close;
  end;
end;