Código en Delphi 6, válido para Delphi for win32 y CodeGear RAD Studio (Delphi win32) | ||
Este componente 'no visual' captura todos/parte de los mensajes que reciben un conjunto de los controles que contenga el form pero no impide que los controles respondan al mensaje, sino que salta justo antes o después de que éstos respondan.
Hay que tener cuidado con lo que se programa en el evento OnCatchEvent porque saltará cada vez que los controles que le señalemos reciban mensajes (y pueden ser cientos, por ejemplo movimientos del ratón).
Propiedades:
Controls : Colección de controles de los que capturar los mensajes.
MessageCatched : Conjunto de los posibles Mensajes que se capturarán :
Valor propiedad Mensaje Windows mtAny (Todos los mensajes incluso los que no aparecen en esta lista) mtSetFocus WM_SETFOCUS mtKillFocus WM_KILLFOCUS mtSetText WM_SETTEXT mtGetText WM_GETTEXT mtKeyDown WM_KEYDOWN mtKeyUp WM_KEYUP mtChar WM_CHAR mtPaste WM_PASTE mtCut WM_CUT mtCopy WM_COPY mtClear WM_CLEAR mtHScroll WM_HSCROLL mtVScroll WM_VSCROLL mtMouseWheel WM_MOUSEWHEEL mtLButtonDown WM_LBUTTONDOWN mtLButtonUp WM_LBUTTONUP mtLButtonDblClk WM_LBUTTONDBLCLK mtRButtonDown WM_RBUTTONDOWN mtRButtonUp WM_RBUTTONUP mtRButtonDblClk WM_RBUTTONDBLCLK mtMButtonDown WM_MBUTTONDOWN mtMButtonUp WM_MBUTTONUP mtMButtonDblClk WM_MBUTTONDBLCLK mtMove WM_MOVE mtMouseEnter CM_MOUSEENTER mtMouseLeave CM_MOUSELEAVE mtMouseMove WM_MOUSEMOVE mtPaint WM_PAINT Catch : OnCatchEvent salta antes o después de que el control responda al mensaje. Si pone el valor de la propiedad a cBefore, el código del evento OnCatchEvent no debe provocar nuevos mensajes en el control:
cBefore Salta antes.
cAfter Salta después.
Eventos :
OnCatchEvent : Salta cada vez que los controles reciben un mensaje (cualquie mensaje o de los de la propiedad MessageCatched) y se ejecuta antes o después de que éstos hayan respondido al mensaje.