El ejemplo de este artículo describe cómo Delphi se da cuenta de la capacidad del formulario para detectar el paso del mouse y ocultar y mostrar automáticamente la ventana. Compártelo con todos para tu referencia. El método de implementación específico es el siguiente:
const WM_MouseEnter = $B013; WM_MouseLeave = $B014; escriba TfrmMain = class(TForm) . Timer1: TTimer; procedimiento Timer1Timer(Remitente: TObject); implementación R *.dfm}procedimiento TfrmMain.WMMouseEnter(var Msg: TMessage);begin if(Top<0) luego begin Top := 0 //Para garantizar que el formulario desplegable se presente al principio SetWindowPos(Handle,HWND_TOPMOST,0,0,0 ,0, SWP_NOMOVE o SWP_NOSIZE); // Empuje el formulario al frente SetWindowPos(Handle,HWND_NOTOPMOST,0,0,0,0,SWP_NOMOVE or SWP_NOSIZE); // Luego cancele el formulario al frente. Timer1.Enabled := True;end;//Depend; on timer Verifique periódicamente si el mouse todavía está dentro del alcance del formulario, //Esto puede evitar perder el procedimiento del evento MOUSELEAVE debido al movimiento rápido del mouse TfrmMain.Timer1Timer(Sender: TObject);var rc:TRECT; pt:TPOINT;begin GetWindowRect(self.Handle,rc); //Obtiene el área rectangular del formulario GetCursorPos(pt); posición si (no PtInRect (rc, pt)) entonces // Si el mouse no está dentro del alcance del formulario, comience si (Arriba = 0) entonces //Si el formulario está actualmente adjunto al borde superior de la pantalla, mueva el formulario oculto hacia arriba start Top := 0-Height+2 end;Timer1.Enabled := False //El temporizador se apaga después del formulario; está oculto SetWindowPos(Handle, HWND_TOPMOST,0,0,0,0,SWP_NOMOVE or SWP_NOSIZE //Envía el formulario al frontend;end;
Espero que este artículo sea útil para la programación Delphi de todos.