Con aplicaciones de escritorio (Windows), un cuadro de mensaje (diálogo) se usa para alertar al usuario de la aplicación que se deben tomar algunas medidas, que se completó alguna operación o, en general, para llamar la atención de los usuarios.
En Delphi, hay varias formas de mostrar un mensaje al usuario. Puede usar cualquiera de los mensajes ya preparados que muestran rutinas proporcionadas en el RTL, como ShowMessage o InputBox; o puede crear su propio cuadro de diálogo (para reutilizar): CreateMessageDialog.
Un problema común con todos los cuadros de diálogo anteriores es que requieren que la aplicación esté activa para mostrarse al usuario. "Activo" se refiere a cuando su aplicación tiene el "foco de entrada".
Si realmente quiere captar la atención del usuario y evitar que hagan otra cosa, debe poder muestra un cuadro de mensaje superior modal del sistema incluso cuando su aplicación no está activa.
Aunque esto pueda sonar complicado, en realidad no lo es.
Dado que Delphi puede acceder fácilmente a la mayoría de las llamadas a la API de Windows, ejecutar la función de API de Windows "MessageBox" hará el truco.
Definido en la unidad "windows.pas", la que se incluye por defecto en la cláusula de usos de cada formulario Delphi, el Buzon de mensaje La función crea, muestra y opera un cuadro de mensaje. El cuadro de mensaje contiene un mensaje y título definidos por la aplicación, junto con cualquier combinación de íconos y botones predefinidos.
Así se declara el cuadro de mensaje:
función Buzon de mensaje(
El primer parámetro, hwnd, es el identificador de la ventana del propietario del cuadro de mensaje que se creará. si crea un cuadro de mensaje mientras está presente un cuadro de diálogo, use un controlador para el cuadro de diálogo como hWnd parámetro.
los lpText y lpCaption especifique el título y el texto del mensaje que se muestra en el cuadro de mensaje.
El último es el uType parámetro y es el más interesante. Este parámetro especifica el contenido y el comportamiento del cuadro de diálogo. Este parámetro puede ser una combinación de varios indicadores..
Echemos un vistazo a un ejemplo de creación de un cuadro de mensaje superior modal del sistema. Manejará el mensaje de Windows que se envía a todas las aplicaciones en ejecución cuando cambia la fecha / hora del sistema, por ejemplo, utilizando el applet del Panel de control "Propiedades de fecha y hora".
La función MessageBox se llamará como:
Windows.MessageBox (
encargarse de,
'Este es un mensaje modal del sistema' # 13 # 10 'de una aplicación inactiva',
'¡Un mensaje de una aplicación inactiva!',
MB_SYSTEMMODAL o MB_SETFOREGROUND o MB_TOPMOST o MB_ICONHAND);
La pieza más importante es el último parámetro. El "MB_SYSTEMMODAL o MB_SETFOREGROUND o MB_TOPMOST" asegura que el cuadro de mensaje es modal del sistema, el más alto y se convierte en la ventana de primer plano.
Aquí está el código de ejemplo completo (TForm llamado "Form1" definido en la unidad "unit1"):
unidad Unidad 1;
interfaz
usos
Windows, Mensajes, SysUtils, Variantes, Clases,
Gráficos, controles, formularios, cuadros de diálogo, ExtCtrls;
tipo
TForm1 = clase(TForm)
privado
procedimiento WMTimeChange (var Msg: TMessage); mensaje WM_TIMECHANGE;
público
Declaraciones públicas
final;
var
Form1: TForm1;
implementación$ R * .dfm
procedimiento TForm1.WMTimeChange (var Msg: TMessage);
empezar
Windows.MessageBox (
encargarse de,
'Este es un mensaje modal del sistema' # 13 # 10 'de una aplicación inactiva',
'¡Un mensaje de una aplicación inactiva!',
MB_SYSTEMMODAL o MB_SETFOREGROUND o MB_TOPMOST o MB_ICONHAND);
final;
final.
Intenta ejecutar esta sencilla aplicación. Asegúrese de que la aplicación esté minimizada o al menos que alguna otra aplicación esté activa. Ejecute el applet del Panel de control "Propiedades de fecha y hora" y cambie la hora del sistema. Tan pronto como presione el botón "Aceptar" (en el applet) se mostrará el cuadro de mensaje superior modal del sistema de su aplicación inactiva.