[AccessD] events question

A.D.Tejpal adtp at airtelbroadband.in
Tue Dec 11 11:53:56 CST 2007


Using common function for MouseMove over multiple controls
==========================================

    1 - MouseMove over a given control does not necessarily imply that the control in question is the active control. This rules out the use of an omnibus function based upon ActiveControl. Instead, it becomes necessary that even if a common function of generic nature is used for all controls, name of each individual control making the call has to be passed as an argument.

    2 - Evidently, conventional approach in calling such a function from MouseMove events of multiple controls involves tedious work by the developer. Repetitive entries of function name (with control name as argument) are needed either in VBA code in MouseMove event for each of the controls in question, or directly as similar entries against OnMouseMove property on Event tab in properties dialog box of each such control.

    3 - An interesting alternative that makes the whole process remarkably simpler, is suggested below:

    3.1 - With form in design view, select all controls required to make use of the common function. Set the tag property of these controls to "MM" (simply enter MM without any enclosing quotes).  Save.

    3.2 - Go to VBA window and place the sample code as given below, in form's module. Save and compile. Come out of VBA window, save and close the form.

    3.3 - As the form loads, OnMouseMove event property of all the above controls will get set to function Fn_MMove(), correctly passing the name of control as argument in each case. 

    3.4 - As per the common function Fn_MMove() given below, back color of all the above text boxes (having "MM" as the tag property) will change to red on mouse move.

A.D.Tejpal
------------

Sample code in form's module
'==================================
Private Sub Form_Load()
    On Error Resume Next
    Dim ct As Control
    
    For Each ct In Me.Controls
        If ct.Tag = "MM" Then
            ct.OnMouseMove = _
                "=Fn_MMove('" & ct.Name & "')"
        End If
    Next
    On Error GoTo 0
End Sub
'--------------------------------------------------

Private Function Fn_MMove(StrTxtBoxName As String)
    Me(StrTxtBoxName).BackColor = vbRed
End Function
'==================================

  ----- Original Message ----- 
  From: Susan Harkins 
  To: AccessD at databaseadvisors.com 
  Sent: Friday, December 07, 2007 21:24
  Subject: [AccessD] events question


  I don't know how to summarize this question, hence the bad subject. I 
  apologize.

  I'm wondering if there's a way to consolidate similar event calls into one 
  event. For instance, if you want to passto/call a function from every 
  control's Mouse Over event, is there a simple way to do that with one call 
  rather than dropping the call into every single control's appropriate event?

  I've run into this so many times and it just seems so inefficient.

  Susan  H.


More information about the AccessD mailing list