Das Beispiel in diesem Artikel beschreibt, wie Delphi die Fähigkeit des Formulars erkennt, die Bewegung der Maus darüber zu erkennen und das Fenster automatisch auszublenden und anzuzeigen. Teilen Sie es als Referenz mit allen. Die spezifische Implementierungsmethode ist wie folgt:
const WM_MouseEnter = $B014;type TfrmMain = class(TForm) R *.dfm}Prozedur TfrmMain.WMMouseEnter(var Msg: TMessage);begin if(Top<0) then begin Top := 0; //Um sicherzustellen, dass das Dropdown-Formular vorne angezeigt wird SetWindowPos(Handle,HWND_TOPMOST,0,0,0 ,0, SWP_NOMOVE oder SWP_NOSIZE); //Formular nach vorne schieben SetWindowPos(Handle,HWND_NOTOPMOST,0,0,0,0,SWP_NOMOVE or SWP_NOSIZE); //Formular dann nach vorne abbrechen; Timer1.Enabled := True;end;//Depend on timer Überprüfen Sie regelmäßig, ob sich die Maus noch im Bereich des Formulars befindet. // Dadurch kann vermieden werden, dass die MOUSELEAVE-Ereignisprozedur aufgrund schneller Mausbewegungen verloren geht TfrmMain.Timer1Timer(Sender: TObject);var rc:TRECT; pt:TPOINT;begin GetWindowRect(self.Handle,rc); //Holen Sie sich den rechteckigen Bereich des Formulars GetCursorPos(pt); //Holen Sie sich die aktuelle Maus position if( not PtInRect(rc,pt)) then //Wenn sich die Maus nicht im Bereich des Formulars befindet, beginne if(Top = 0) then //Wenn das Formular derzeit am oberen Rand des Bildschirms angebracht ist, verschieben Sie das ausgeblendete Formular nach oben begin Top := 0-Height+2; //Der Timer wird nach dem Formular ausgeschaltet ist versteckt SetWindowPos(Handle ,HWND_TOPMOST,0,0,0,0,SWP_NOMOVE or SWP_NOSIZE); //Das Formular an das Frontend senden;Ende;
Ich hoffe, dass dieser Artikel für alle bei der Delphi-Programmierung hilfreich sein wird.