Private Sub framePDF_MouseMove(ByVal...)
framePDF.BackColor = &H80000012&
그래서 프레임의 색상이 변경됩니다.
커서를 프레임에서 멀리 떨어 뜨리면 색상을 반환하는 이벤트를 찾을 수 없습니까?MouseMove - 역 이벤트가 무엇입니까?
Private Sub framePDF_MouseMove(ByVal...)
framePDF.BackColor = &H80000012&
그래서 프레임의 색상이 변경됩니다.
커서를 프레임에서 멀리 떨어 뜨리면 색상을 반환하는 이벤트를 찾을 수 없습니까?MouseMove - 역 이벤트가 무엇입니까?
vba 및 VB6에는 MouseLeave 이벤트가 없습니다.
이것을 달성하는 가장 좋은 방법은 마우스가 프레임에 들어갈 때 타이머를 시작하는 것입니다.
그런 다음 타이머 코드에서 마우스 포인터가 여전히 프레임 경계 내에 있는지 확인하십시오. 하지 않으면 것은 색을 다시 변경 및 정지 타이머를
넣어이 코드를 모듈에 :
Public Declare Function GetCursorPos Lib "user32" (lpPoint As _
POINTAPI) As Long
Public Type POINTAPI
x As Long
y As Long
End Type
이 양식에 타이머를 작성, interval =10
Enbaled = False
그런 다음 코드는 다음과 같은 형태로 설정 :
Private Sub frameTest_MouseMove(Button As Integer, Shift As Integer, x As Single, y As Single)
frameTest.BackColor = vbRed
tmrMouseLeave.Enabled = True
End Sub
Private Sub tmrMouseLeave_Timer()
Dim pt As POINTAPI
Call GetCursorPos(pt)
Dim xValue As Long, yValue As Long
xValue = pt.x * Screen.TwipsPerPixelX
yValue = pt.y * Screen.TwipsPerPixelY
If (xValue > (Me.Left + frameTest.Left)) And _
(xValue < (Me.Left + frameTest.Left + frameTest.width)) And _
(yValue > (Me.Top + frameTest.Top)) And _
(yValue < (Me.Top + frameTest.Top + frameTest.height)) Then
'we are still inside the frame
Else
'mouse is outside the frame
frameTest.BackColor = vbBlue
tmrMouseLeave.Enabled = False
End If
End Sub
사용자 정의 폼에서? Userform에는 또한 Frame에있을 때 실행되지 않는 MouseMove 이벤트가 있습니다.
은 프레임이 빨간색 일 때 빨간색으로 표시하고 그렇지 않을 때는 흰색으로 표시합니다. 이러한 사건은 끊임없이 발생하므로 신중하게 사용하십시오.
Dick, excelent, 많이 고마워. – Alegro
쉬운 방법 : MouseMove 이벤트에서 컨트롤의 너비와 높이 (여백 빼기, 예 : 5)에 대해 X 및 Y 인수를 테스트합니다. 마우스가 여백에 있으면 "마우스 출력"으로 간주하고 변경합니다 그에 따라 컨트롤의 색상. 동시 단추, z 순서 조작, 프레임 등이 필요 없습니다.
레이블보다 약간 큰 프레임을 추가하고 레이블 뒤에 배치 한 다음 MouseMove 이벤트를 프레임에 추가 할 수 있습니까? 그런 다음 레이블 색상을 검색하여 마우스가 레이블을 떠나거나 입력하는지 판별 할 수 있습니다. – user3357963
나는 이해했다. 시도해 주셔서 감사합니다 – Alegro