#define TME_LEAVE 2
DATA bResized, bLDblClick, bWhen, bValid, bKeyChar, bMLeave, bMMoved
DATA oToolTip
METHOD CheckToolTip( nRow, nCol )
METHOD IsVisible() INLINE IsWindowVisible( ::hWnd )
METHOD MouseLeave( nRow, nCol, nKeyFlags )
Code: Select all | Expand
+METHOD MouseLeave( nRow, nCol, nKeyFlags ) CLASS TWindow
+
+ if ::oToolTip != nil
+ if ::oToolTip:IsVisible()
+ ::oToolTip:Hide()
+ endif
+ ::oToolTip:lShowAgain = .T.
+ endif
+
+ if ! Empty( ::bMLeave )
+ Eval( ::bMLeave, nRow, nCol, nKeyFlags, Self )
+ endif
+
+return nil
Code: Select all | Expand
METHOD MouseMove( nRow, nCol, nKeyFlags ) CLASS TWindow
if ::oCursor != nil
::SetMsg( ::cMsg )
- ::CheckToolTip()
+ ::CheckToolTip( nRow, nCol )
if ::OnMouseMove != nil
if ValType( ::OnMouseMove ) == "B"
return Eval( ::bMMoved, nRow, nCol, nKeyFlags )
endif
+ TrackMouseEvent( ::hWnd, TME_LEAVE )
+
return 0
Code: Select all | Expand
+METHOD CheckToolTip( nRow, nCol ) CLASS TWindow
+
+ local aPoint
+
+ if ::oToolTip != nil
+ if ::oToolTip:nTop != ::nTop + nRow + 10 .and. ;
+ ::oToolTip:nLeft != ::nLeft + nCol + 10
+ aPoint = { ::nTop + nRow + 10, ::nLeft + nCol + 10 }
+ ClientToScreen( ::hWnd, aPoint )
+ ::oToolTip:SetPos( aPoint[ 1 ], aPoint[ 2 ] )
+ endif
+ if ( ! ::oToolTip:IsVisible() ) .and. ::oToolTip:lShowAgain
+ ::oToolTip:Show()
+ ::oToolTip:lShowAgain = .F.
+ endif
+ return nil
+ endif
...