Te tengo que pedir perdón Caral porque te voy dando la información a cuentagotas, sí, utilizo el ratón para moverme por el panel y sus componentes, pero también el teclado, además el panel que estoy utilizando lo pongo en Align:=AlClient por lo que los demás se quedan detrás, entonces voy añadiendo los nombres de los paneles que tengo abiertos en un statusbar, al pulsar sobre el nombre del panel que quieres ver te lo trae al frente. tu solución valdría si los paneles tuvieran una posición fija cada uno, sabiendo la posición del panel y la del mouse.
Una solución que me sirvió una vez para una aplicación que quería que se cerrase si no se estaba utilizando fué la siguiente:
Código Delphi
[-]
procedure TFrmMenuCompras.ApplicationEvents1Message(var Msg: tagMSG;
var Handled: Boolean);
begin
if (Msg.message = WM_MOUSEMOVE) then
begin
timer1.Enabled:=false;
timer1.Enabled:=true;
end
else
begin
if (Msg.message = WM_KEYDOWN) or (Msg.message = WM_KEYUP) or
(Msg.message = WM_SYSKEYDOWN) or (Msg.message = WM_SYSKEYUP) or
(Msg.message = WM_ACTIVATE) or (Msg.message = WM_NCACTIVATE) or
(Msg.message = WM_ACTIVATEAPP) or
(Msg.message = WM_LBUTTONDOWN) or
(Msg.message = WM_RBUTTONDOWN) or (Msg.message = WM_MBUTTONDOWN) then
begin
timer1.Enabled:=false;
timer1.Enabled:=true;
end;
end;
end;
Pero esto era para cerrar la aplicación entera no una cierta parte de la aplicación.
Espero que así se entienda mejor.