Skip to content

Delphi Messagebox

En un artículo anterior, aprendimos a utilizar MessageDlg que nos brinda la unit Dialogs.

En este artículo aprenderemos a utilizar MessageBox, que se utiliza para mostrar un cuadro de diálogo genérico, mensaje con uno o más botones al usuario.

La diferencia entre ambos es que MessageDlg es íntegramente manejado por Delphi, mientras que MessageBox es una encapsulación de la función MessageBox de la API de Windows.

Declaración de la función MessageBox

función TApplication.MessageBox( const Text: PChar; const Caption: PChar; Flags: Longint = MB_OK): Integer;

Parámetros de la función MessageBox

  • Text: Text, es el mensaje propiamente dicho, de tipo PChar.
  • Caption: En el parámetro Caption de tipo PChar, podemos enviar el título del cuadro de diálogo.
  • Flags: En el parámetro Flags, especificaremos que botones aparecerán en el cuadro de diálogo.

En el parámetro Flags podemos enviar los siguientes valores:

  • MB_ABORTRETRYIGNORE: Muestra tres botones: Abortar, Reintentar e Ignorar.
  • MB_OK: Muestra el botón OK que también es el valor predeterminado.
  • MB_OKCANCEL: Muestra los botones: Aceptar y Cancelar.
  • MB_RETRYCANCEL: Muestra dos botones: Reintentar y Cancelar.
  • MB_YESNO: El cuadro de diálogo muestra los botones: y No.
  • MB_YESNOCANCEL: El cuadro de mensaje contiene tres botones: , No y Cancelar.

MessageBox, al ser una función retorna un valor, en este caso de tipo Integer.

Si devuelve el valor 0 (cero), nos indica que no se encontró suficiente memoria para crear el cuadro de diálogo. De lo contrario devolverá alguno de los valores siguientes:

  1. IDOK: El usuario seleccionó el botón Aceptar.
  2. IDCANCELAR: El usuario seleccionó el botón Cancelar.
  3. IDABORT: El usuario seleccionó el botón Abortar .
  4. IDRETRY: El usuario seleccionó el botón Reintentar.
  5. IDIGNORE: El usuario seleccionó el botón Ignorar.
  6. IDYES: El usuario seleccionó el botón Sí.
  7. IDNO: El usuario seleccionó el botón No.

Ejemplo de la función MessageBox

procedure TForm1.Button1Click(Sender: TObject);
begin
  if Application.MessageBox(
   'No se pudo abrir la Tabla1 exclusiva - ¿Intentar de nuevo?',
   'Error',  MB_YESNO  ) = 6 then
   begin
     // Respuesta Yes
   end;
end;