Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   OOP (https://www.clubdelphi.com/foros/forumdisplay.php?f=5)
-   -   Componente que use eventos de mensajes (https://www.clubdelphi.com/foros/showthread.php?t=74546)

r_e_g_2007 24-06-2011 20:36:38

Componente que use eventos de mensajes
 
Hola,

Quisiera preguntar haber si existe algo para esto.

Tengo un componente que ademas de hacer algunas funciones necesita chequear eventos de mensajes que pueden ocurrir en toda la aplication y no solo en el componente.
Yo dentro de mi componente uso el componente TApplicationEvents poniendolo dentro de mi componente pero que sucede: que despues pongo el componente mio en un programa y este internamente hace uso del componente TApplicationEvents y entonces si en ese programa pongo una asignacion de mensajes a la aplicación(application.onMessage := "procedure cualquier"). Cuando hago esto ya no se ejecuta el applicationevents de mi componente, solo el onmessage de la application.
Mi pregunta,
Como podria interceptar todos los eventos de mensajes de la application dentro de mi
componente sin que dependa de que Application.OnMessage tenga un procedure asignado.

Un pedazo del programa
Código Delphi [-]
 
TMiComponente
private
  FAppEv: TApplicationEvents;
  procedure EvAppEvMessage(var Msg: tagMSG; var Handled: Boolean);
public
  constructor Create(AOwner: TComponent); override;
end;
 
interface
 
procedure TamControlSpeedButton.EvApplicationEventsMessage(var Msg: tagMSG; var Handled: Boolean);
begin
 If (Msg.Message = WM_LBUTTONDOWN) Then
 Begin
  If Not((Msg.Hwnd = Parent.Handle) and
     (Msg.Pt.X >= ClientOrigin.X) and (Msg.Pt.X < ClientOrigin.X + Width) and
     (Msg.Pt.Y >= ClientOrigin.Y) and (Msg.Pt.Y < ClientOrigin.Y + Height))   Then Begin
  Down := False;
 End;
end;

constructor TamControlSpeedButton.Create(AOwner: TComponent);
begin
 Inherited Create(AOwner);
 // Initialize internal controls
 FAppEvMain := TApplicationEvents.Create(Self);
 FAppEvMain.OnMessage := EvApplicationEventsMessage;
end;
 
//En el programa si hago
 
procedure DoMessage(var Msg: tagMSG; var Handled: Boolean);
begin
end;
 
procedure formCreate
begin
 Application.OnMessage := DoMessage;
end;

Al hacer esto en el programa pierde el efecto del TApplicationEvents en mi componente.

Muchas gracias a todos.

Un saludo

ecfisa 24-06-2011 20:44:55

Hola r_e_g_2007.

Te ruego que encierres entre las etiquetas [delphi] [/delphi] el código Delphi que incluyas para que tengamos una mejor legibilidad del mismo.
En este caso ya te las he agregado.

Saludos y gracias por tu colaboración. :)

r_e_g_2007 24-06-2011 21:16:50

Disculpen y muchas gracias
 
Disculpen, es mi segundo mensaje y me lo habian dicho, pero lo mandé sin volver a darme cuenta.

Muchas gracias


La franja horaria es GMT +2. Ahora son las 15:19:00.

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