[AccessD] How to tell a button's "air space" is nolonger beinghovered over

A.D. Tejpal adtp at airtelmail.in
Tue Jul 5 04:10:09 CDT 2011


Bill,

    Apparently, in view of special positioning of control in question, you are looking for a solution that is self contained within control's MouseMove event. You could experiment with sample code given below:

' Code in form's module
'==============================
' Declarations section
Private gX As Single, gY As Single
'---------------------------------------------

Private Sub CmdTest_MouseMove( _
                    Button As Integer, _
                    Shift As Integer, _
                    X As Single, Y As Single)
    
    With Me.CmdTest
        Me.CmdTest.Caption = "Test (MM)"
        
        If gX <> 0 Then
            If (X > (0.9 * .Width) And X > gX) _
                        Or (X < (0.1 * .Width) And _
                        X < gX) Then
                Me.CmdTest.Caption = "Test"
            End If
        End If
        
        If gY <> 0 Then
            If (Y > (0.9 * .Height) And Y > gY) _
                        Or (Y < (0.1 * .Height) And _
                        Y < gY) Then
                Me.CmdTest.Caption = "Test"
            End If
        End If
    End With
    
    gX = X
    gY = Y
End Sub
'==============================

    Normal caption of command button named CmdTest is "Test". When mouse pointer is brought over it, the caption changes to "Test (MM)". As & when the mouse pointer moves away from the control, the caption reverts back to normal, i.e. "Test".

    Note:
    (a) MouseMove event fires in rapid-fire style. Values for X and Y returned by this event have a range from 0 upto the width and height (in twips) of the control in question.
    (b) The multiplying factors of 0.9 and 0.1 used in the sample code could perhaps be fine tuned further (say 0.95 and 0.05) so as to narrow down the twilight zone. However a coarser setting as adopted above, is found conducive to more consistent behavior. This is because a deliberately wild mouse sweep by the user can result in X or Y value getting truncated short of the potential maximum, even though the mouse pointer has moved out.

Best wishes,
A.D. Tejpal
------------

  ----- Original Message ----- 
  From: William Benson (VBACreations.Com) 
  To: 'Access Developers discussion and problem solving' 
  Sent: Monday, July 04, 2011 20:53
  Subject: Re: [AccessD] How to tell a button's "air space" is nolonger beinghovered over


  A.D.,

  Other controls are too near the button's bottom and it's top edge is pretty
  much as .Top = 0.

  I have put the code in the other controls already, similar to what you
  wrote.

  I was wondering if there was a way like to test the mousemove if the
  coordinates are exactly on bottom or top or at either side of the button,
  based on X, Y, or whatever... and if so, the caption is treated as if the
  mouse were outside it, and if not, use the caption that pertains to the
  moust being inside. During a normal mousemove operation the user will be
  headed out or headed into the interior of the button, so 

   -- if on the way out, the last code to execute will be to reset the caption
   -- if on the way in, the code executing (probably continuously) will be to
  set the caption appropriate for interior of button

  But I don't think it is possible to get the event to faithfully fire exactly
  as the mouse is going over the edge of the button.

  Thanks a lot,

  Bill

  -----Original Message-----
  From: accessd-bounces at databaseadvisors.com
  [mailto:accessd-bounces at databaseadvisors.com] On Behalf Of A.D. Tejpal
  Sent: Monday, July 04, 2011 10:23 AM
  To: Access Developers discussion and problem solving
  Subject: Re: [AccessD] How to tell a button's "air space" is no longer
  beinghovered over

  William,

      For detecting whether the mouse pointer has moved away from the control
  in question, you can use the MouseMove event of form section to which the
  said control belongs, for example:

  ' Code in form's module
  '=============================
  Private Sub Detail_MouseMove( _
                  Button As Integer, Shift As Integer,  _
                  X As Single, Y As Single)

      ' <<Your Code>>

  End Sub
  '--------------------------------------------

  Private Sub FormFooter_MouseMove( _
                  Button As Integer, Shift As Integer,  _
                  X As Single, Y As Single)

      ' <<Your Code>>

  End Sub
  '--------------------------------------------

  Private Sub FormHeader_MouseMove( _
                  Button As Integer, Shift As Integer,  _
                  X As Single, Y As Single)

      ' <<Your Code>>

  End Sub
  '=============================

  Best wishes,
  A.D. Tejpal
  ------------


    ----- Original Message ----- 
    From: William Benson (VBACreations.Com) 
    To: 'Access Developers discussion and problem solving' 
    Sent: Sunday, July 03, 2011 01:23
    Subject: [AccessD] How to tell a button's "air space" is no longer
  beinghovered over

    I have some code which changes the caption of a button when the user has
  the ctrl key pressed, set during the mousemove event for the button.

    I want however, that when the user leaves the "air space" for the button,
    then the caption reverts - regardless whether they still have shift held.

    I know I can use use the mousemove event associated with all surrounding
    controls to reset it, but I would like something more related to the
  control itself. 

    Is there a method of testing that the user has moved the mouse outside the
    button's air space? 

    I have a feeling I am going to be out of luck...


More information about the AccessD mailing list