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
AuxWndProc: TWndMethod; procedure MyWndProc(var Message: TMessage);
...
...
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); 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...