이 기사의 예제에서는 델파이가 마우스 오버를 감지하고 자동으로 창을 숨기고 표시하는 폼의 기능을 인식하는 방법을 설명합니다. 참고할 수 있도록 모든 사람과 공유하세요. 구체적인 구현 방법은 다음과 같습니다.
const WM_MouseEnter = $B014;type TfrmMain = class(TForm) . . Timer1: TTimer(Sender: TObject); message WM_MouseEnter; R *.dfm}프로시저 TfrmMain.WMMouseEnter(var Msg: TMessage);begin if(Top<0) then start Top := 0; //드롭다운 양식이 전면에 표시되도록 하려면 SetWindowPos(Handle,HWND_TOPMOST,0,0,0 ,0, SWP_NOMOVE 또는 SWP_NOSIZE); //양식을 앞쪽으로 푸시합니다. SetWindowPos(Handle,HWND_NOTOPMOST,0,0,0,0,SWP_NOMOVE or SWP_NOSIZE); //그런 다음 양식을 앞쪽 끝으로 취소합니다. Timer1.Enabled := True;end;//Depend on 타이머 마우스가 여전히 양식 범위 내에 있는지 정기적으로 확인하십시오. //이렇게 하면 마우스의 빠른 움직임으로 인해 MOUSELEAVE 이벤트 프로시저가 손실되는 것을 방지할 수 있습니다. TfrmMain.Timer1Timer(Sender: TObject);var rc:TRECT; pt:TPOINT;begin GetWindowRect(self.Handle,rc); //GetCursorPos(pt) 형식의 직사각형 영역을 가져옵니다. position if( not PtInRect(rc,pt)) then //마우스가 양식 범위 내에 있지 않은 경우 start if(Top = 0) then //현재 폼이 화면 위쪽 가장자리에 붙어 있으면 숨겨진 폼을 위로 이동합니다. start Top := 0-Height+2 end; //폼 이후 타이머가 꺼집니다. 숨겨져 있습니다. SetWindowPos(Handle ,HWND_TOPMOST,0,0,0,0,SWP_NOMOVE 또는 SWP_NOSIZE); //양식을 프런트엔드에 푸시합니다.
이 글이 모든 사람의 델파이 프로그래밍에 도움이 되기를 바랍니다.