Ver Mensaje Individual
  #2  
Antiguo 06-05-2003
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Reputación: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Capturar el OnMouseDown (esto es, redefinir el método MouseDown) del formulario base no te sirve porque sólo captarías los mensajes directos sobre la forma y no sobre componentes que estén en la forma.

La manera que se me ocurre (probada aunque no comprobada) es colocar una componente TApplicationEvents en el formulario base y en su evento OnMessage poner:

Código:
if
  ((Msg.message >= WM_MOUSEFIRST) and (Msg.message <= WM_MOUSELAST)) and
  ((Msg.hwnd = Handle) or IsChild(Handle, Msg.hwnd))
then
begin
  { Aquí el código que quieras }
end;
ApplicationEvents captura todos los mensajes dirigidos a la aplicación, incluídos mesajes a otras ventanas no heredadas de tu formulario base. Por ello debes verificar que Msg.hwnd es el "handle" de la ventana o de algún componente dentro de ella.

Ten en cuenta sin embargo, que el código que pongas para manejar los mensajes debe ser lo más rápido posible, de lo contrario tu aplicación se puede alentar bastante.

// Saludos
Responder Con Cita