Una de las claves de la programación tradicional de Windows es manejar el mensajes enviado por Windows a las aplicaciones. En pocas palabras, un mensaje es información enviada de un lugar a otro. En su mayor parte, Delphi facilita el manejo de mensajes mediante el uso de eventos, un evento generalmente se genera en respuesta a un mensaje de Windows que se envía a una aplicación.
Sin embargo, algún día es posible que desee procesar algunos mensajes poco comunes como: CM_MOUSEENTER que ocurre (es publicado por Windows) cuando el cursor del mouse ingresa al área del cliente de algún componente (o formulario).
El manejo de mensajes por su cuenta requiere algunas técnicas de programación adicionales, este artículo está aquí para ayudarnos a encontrar el camino correcto a través del río de mensajes y obtener la información necesaria.
Estrategias para manipular mensajes de Windows con Delphi
Arrastra una ventana: ¡Sin barra de título! ¿Cómo puedes arrastrar esa ventana? Es fácil y divertido: hagamos que un formulario de Delphi se mueva haciendo clic (y arrastrando) en su área de cliente. La idea principal es obtener el mensaje de Windows wm_NCHitTest.
Cómo enviar información (String, Image, Record) entre dos aplicaciones Delphi (WM_CopyData): aprenda cómo enviar el mensaje WM_CopyData entre dos aplicaciones Delphi para intercambiar información y hacer que dos aplicaciones se comuniquen. El código fuente que acompaña muestra cómo enviar una cadena, registro (tipo de datos complejo) e incluso gráficos a otra aplicación.
Windows pegajoso: esta estrategia le permite acoplar sus formularios Delphi a los bordes de la pantalla de su escritorio.
Monitoreo de cambios en el registro: ¿necesita recibir una notificación sobre los cambios en los atributos o contenidos de una clave de registro específica? Entonces está listo para esto, su kit de herramientas de código de Delphi.
Envío de mensajes a aplicaciones sin ventanas: esta estrategia se utiliza para enviar mensajes (señales) a aplicaciones sin ventanas mediante AllocateHWND y DefWindowProc. Debe comprender lo que hace Delphi en el fondo para interceptar mensajes de Windows, cómo puede escribir su propio controlador de mensajes para una aplicación con ventana y cómo obtener un identificador de mensaje único que pueda usar de manera segura en sus aplicaciones. También hay un pequeño error en el procedimiento Delphi DeallocateHWND que puede solucionar en el camino.
Control del número de instancias de aplicaciones: en este artículo aprenderá a "habilitar una sola vez" una aplicación Delphi que puede verificar su instancia anterior (en ejecución). A lo largo del proceso, se discutirán varias técnicas para implementar tal verificación; así como cómo llevar su aplicación que ya se está ejecutando a primer plano, si un usuario intenta ejecutarla "una vez más". Al final del artículo, tendrá un código para copiar para controlar el comportamiento de las instancias múltiples de su aplicación: con la opción de limitar el número de instancias en ejecución.
Cómo manejar el cambio de hora del sistema usando el código Delphi: si necesita reaccionar cuando la fecha del sistema ha cambiado, puede manejar el mensaje WM_TimeChange de Windows.
Cómo dibujar texto personalizado en la barra de título de un formulario de Delphi: si desea agregar texto personalizado en la barra de título de un formulario, sin cambiar la propiedad de título del formulario, debe manejar un mensaje especial de Windows: WM_NCPAINT (junto con WM_NCACTIVATE ).
Cómo mostrar sugerencias de elementos de menú: por diseño (Windows), en las aplicaciones de Delphi, las sugerencias asignadas a elementos de menú no se muestran en la ventana emergente de información sobre herramientas (cuando el mouse se desplaza sobre un menú).
Obtener, configurar y manejar modos de dispositivo de visualización (resolución de pantalla y profundidad de color): esta estrategia le permite cambiar la configuración del modo de visualización de Windows (resolución y profundidad de color) del código de Delphi. También puede manejar el mensaje de Windows WM_DISPLAYCHANGE enviado a todas las ventanas cuando la resolución de la pantalla ha cambiado.
Obtener URL actual de IE: hay una táctica de Delphi para recuperar la URL completa de todas las instancias abiertas de Internet Explorer.
Detección y prevención del cierre de Windows: puede usar Delphi para cancelar mediante programación la acción de cierre de Windows.
Mostrar un cuadro de diálogo de contraseña: suponga que tiene un tipo de aplicación de datos críticos donde no desea que un usuario no creado trabaje con los datos. ¿Qué sucede si necesita mostrar un diálogo de contraseña * antes * de que la aplicación se restaure para asegurarse de que un usuario autorizado esté accediendo a ella?.
Elimine la restricción de Windows en el tamaño mínimo del formulario: por diseño de Windows, un formulario (ventana) tiene una restricción de tamaño que establece la altura mínima del formulario a la altura de la barra de título y el ancho a 112 píxeles (118 en el tema XP).
Cómo detectar el evento OnClose (OnPopDown) de TPopupMenu: Desafortunadamente, TPopupMenu no expone un evento que pueda manejar que se disparará cuando se cierre el menú, ya sea después de que un usuario haya seleccionado un elemento del menú o haya activado algún otro elemento de la IU.
Captura de mensajes enviados a una aplicación: "... Delphi muestra el evento OnMessage para el objeto Aplicación. Se supone que el controlador de eventos OnMessage permite atrapar todos los mensajes enviados a su aplicación ..."