Ver Mensaje Individual
  #7  
Antiguo 21-04-2010
Avatar de rgstuamigo
rgstuamigo rgstuamigo is offline
Miembro
 
Registrado: jul 2008
Ubicación: Santa Cruz de la Sierra-Bolivia
Posts: 1.646
Reputación: 17
rgstuamigo Va por buen camino
Arrow

Bueno...otra forma de hacerlo es capturar los mensajes CM_MOUSEENTER y CM_MOUSELEAVE del formulario y utilizar el Procedimiento asociado del formulario(WindowProc).
Mas o menos asi:
Código Delphi [-]
...
type
  TForm1 = class(TForm)
  ...
  ...
 private
    { Private declarations }
    AuxWndProc: TWndMethod;//Es un auxiliar para ejecutar los demas mensajes
  procedure MyWndProc(var Message: TMessage);{Procedimiento que captura 
todos los mensajes de la Ventana o formulario}
 ...
 ...
end;
La imprementación sería:
Código Delphi [-]
procedure TForm1.MyWndProc(var Message: TMessage);
begin
   case Message.Msg of
    CM_MOUSEENTER:ShowMessage('Entro el raton en el formulario');
    CM_MOUSELEAVE:ShowMessage('Salió el raton del formulario') ;
   else AuxWndProc(Message);//Hago que se ejecute los demas mensajes
  end;
end;
Por supuesto que tenemos que poner lo siguiente en el evento OnCreate del formulario:
Código Delphi [-]
procedure TForm1.FormCreate(Sender: TObject);
begin
AuxWndProc:=Form1.WindowProc;
Form1.WindowProc:=MyWndProc;
end;
Claro está que se puede capturar directamente los mensaje CM_MOUSEENTER y CM_MOUSELEAVE sin utilizar el procedimiento asociado a la ventana o formulario, pero lo malo que le veo al hacerlo así es que no solamante se captura los mensajes que van al formualrio sino tambien los mensajes que van tambien a los controles que se encuentran en el formulario..
Saludos...
__________________
"Pedid, y se os dará; buscad, y hallaréis; llamad, y se os abrirá." Mt.7:7

Última edición por rgstuamigo fecha: 22-04-2010 a las 00:23:40.
Responder Con Cita