Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 06-05-2003
Aprendiz Aprendiz is offline
Miembro
 
Registrado: may 2003
Posts: 78
Poder: 22
Aprendiz Va por buen camino
Captura de los Mensajes del Ratón

Hola en el recomienzo a todos.

Resulta que necesito detectar cuando alguien pulsa el ratón sobre mi programa. Hasta aquí parece fácil, la cosa es que trabajo con un formulario base del que heredo los nuevos formularios. Al hacer esto no se los componentes que me pondrán en los formularios heredados ni si estos tendrán sus propios eventos para el OnmouseDown.

La cuestión es que necesito detectar cualquier pulsación del ratón sobre el formulario o alguno de sus componentes para realizar una acción, pero sin "estorbar" los eventos del ratón definidos en cada uno de los componentes.

Había pensado capturar los messages del sistema referentes al ratón, pero no tengo claro ni como funciona ni si es la mejor solución.

Saludos
__________________
[Aprendiz]: Por que siempre hay algo nuevo que aprender.
Responder Con Cita
  #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
Poder: 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
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
enviar mensajes en la red... uper Varios 4 25-02-2009 18:46:09
Alguien sabe de algun Chat(Componente) que no se cuelgue al recibir mensajes???? AGAG4 Varios 2 15-12-2004 15:55:47
Recepción de mensajes a través de sockets epalacios Varios 1 01-07-2004 15:59:17
Como enviar mensajes encriptados por Internet JDNA Internet 6 18-05-2004 07:58:38


La franja horaria es GMT +2. Ahora son las 07:30:11.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi