¡Hola a todos!
Cita:
Empezado por ariefez
...he implementado el mensaje WM_KILLFOCUS pero no se genera...
|
¿Cómo lo has implementado?
Como comentó Román, el evento no le llega a la forma. Según el archivo Win32.hlp que todo programador Windows debe tener al alcance de uno o dos clics: «The WM_KILLFOCUS message is sent to a window immediately before it loses the keyboard focus». Entendiendo en términos generales que el concepto de
ventana en Win32 es cualquier objeto visible que tenga un identificador (
handle) —controles y formas—. Así pues, para que el manejador de mensaje responda deberá ser implementado, como dije antes, en una nueva clase derivada del componente control en cuestión, ¿alguno en especial Ariefez? (TEdit, TButton, TDBGrid...), es decir, creando un nuevo componente descendiente.
Ahora bien, existe una manera de interceptar el mensaje sin tener que definir nuevas clases de componentes, la cual consiste en utilizar el evento OnMessage del objeto Application (más fácilmente con un componente TApplicationEvents). Ahí podrás interceptar el mensaje wm_KillFocus y cualquier otro que sea puesto en la cola de mensajes del programa.
Corrección: El mensaje wm_KillFocus no es puesto en la cola de mensajes de la aplicación. Por lo tanto no se puede utilizar TApplicationEvents para interceptarlo. «
Note: OnMessage only receives messages that are posted to the message queue, not those sent directly with the Windows API SendMessage function», ayuda de Delphi.
Espero esto sea de utilidad, seguimos en contacto.
Al González.