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 13-10-2010
ElDuc ElDuc is offline
Miembro
 
Registrado: jul 2004
Posts: 197
Poder: 20
ElDuc Va por buen camino
Generar mensajes windows

Hola a todos,

Estoy haciendo una pequeña aplicación y me interesaría, si es posible, lanzar mensajes PROPIOS para que todos los componentes puedan captarlos y así generar una cierta comunicación entre ellos.

To conozco que en nuestros componentes podemos incluir eventos que responden a mensajes de Windos, como por ejemplo WM_MouseEnter:

Código Delphi [-]
uses ... Messages...;

type TMiBoton=class(TButton)
  procedure CMMouseEnter(var Msg: TMessage); message CM_MouseEnter;
end;

procedure TMiBoton.CMMouseEnter(var Msg: TMessage); message CM_MouseEnter;
begin
end;
Con este pequeño código dotamos a nuestro nuevo botón de un evento que se disparará cuando el moise entre en su zona.Creo recordar haber leido que nosotros podemos lanzar mensajes a WIndos, que lógicamente pueden recibir nuestros coponentes.Por ejemplo, imaginemos que queremos generar un mensaje MM_XXXX y pasárselo a Windos.Elguien sabe si es esto posible y como se hace;Saludos y gracias por vuestra colaboración.
Responder Con Cita
  #2  
Antiguo 13-10-2010
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.282
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Puedes generar tus propios mensajes donde necesites y luego capturarlos también donde los necesites. Por ejemplo, en el foro hemos tratado alguna vez ese ejemplo, generan el mensaje AFTERSHOW de un formulario. De esa misma forma puedes generar otros que necesites.

Necesitas un lugar donde lanzarlo y luego capturarlo desde donde lo vayas a utilizar.

Revisa este hilo o este otro. Ahí mismo tienes un proyecto de ejemplo, que si no me equivoco está también en el FTP del club.
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #3  
Antiguo 13-10-2010
ElDuc ElDuc is offline
Miembro
 
Registrado: jul 2004
Posts: 197
Poder: 20
ElDuc Va por buen camino
Muchas gracias Neftali,

De lo que he podido leer en los posts que tan amablemente me has pasado, he deducido que una buena opción es utilizar el procedimeinto PostMessage(Handle, MiMessage,0 ,0);

Esto no me funciona y no sé porque, es decir se manda el mensaje correctamente, pero no se dispara el evento que lo intercepta (o debería interceptarlo.

Te pongo el código:
Código Delphi [-]
Uses
     Messages, Windows;
 
Type
     MY_MESSAGE=WM_User+101M
 
     TMyClass=Class(TPersistent)
     Private
     Procedure MYMESAGE(var Msg: TMessage); message MY_NMESSAGE;
     Public
     Procedure MandaMensaje;
... ...
Procedure TMyClass.MYMESAGE(var Msg: TMessage);
Begin
// =====> Ha llegado
End;
 
Procedure TMyClass.MandaMensaje;
Begin
PostMessage(Application.Handle, MY_MESSAGE,0 ,0);
End;

Como te he comentado, el Post se realiza sin ningún error, pero no se alcanza // =====> Ha llegado.

No sé si el error puede estar en el handle que le paso al psot, ya que al no disponer de uno, le paso el de la aplicación.

Por favor, si pueden, me dicen lo que estoy haciendo mal.

Saludos,
Responder Con Cita
  #4  
Antiguo 13-10-2010
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.282
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Basta con que a la hora de lanzarlo cambies:

Código Delphi [-]
PostMessage(Application.Handle, MY_MESSAGE,0 ,0);

por esto:

Código Delphi [-]
PostMessage(Self.Handle, MY_MESSAGE,0 ,0);

Para pasar como parámetro el handle del formulario.
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
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
mensajes o notificaciones de Windows Nora Armijos API de Windows 4 17-11-2008 20:14:45
La tragedia de los mensajes de Windows aeff API de Windows 1 18-11-2006 16:27:05
Mensajes de Error Windows XP marcial Varios 4 26-09-2006 18:03:53
Mensajes de Windows anitra_cattivo API de Windows 1 22-07-2004 19:52:47
Mensajes de windows Ezecool Varios 1 05-08-2003 17:19:47


La franja horaria es GMT +2. Ahora son las 19:34:36.


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