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);
FAppEvMain := TApplicationEvents.Create(Self);
FAppEvMain.OnMessage := EvApplicationEventsMessage;
end;
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