[AccessD] Events Collection??

Charlotte Foust cfoust at infostatsystems.com
Tue Oct 19 16:00:01 CDT 2004


Only if you really *like* working with methods like ProcOfLine! ;-}

Here's some I wrote years ago to print a list of event procedures in a
form module to the immediate window.  It tests for the existence of
control event procedures in the form and prints starting line of
existing procedures or MISSING for missing procedures.  Now THAT'S ugly!

Function TestEventProcs(ByVal strFrm As String)
  On Error Resume Next
  Dim frm As Form
  Dim mdl As Module
  Dim ctl As Control
  Dim prp As dao.Property
  Dim strSub As String
  Dim lngSLine As Long
  Dim lngSCol As Long
  Dim lngELine As Long
  Dim lngECol As Long
  Dim intPfx As Integer
  'make sure the form and its module are open
  If Not IsLoaded(strFrm) Then
    DoCmd.OpenForm strFrm, acDesign
  End If
  Set frm = Forms(strFrm)
  Set mdl = Modules("Form_" & strFrm)
  If Err <> 0 Then
    DoCmd.OpenModule "Form_" & strFrm
    Set mdl = Modules("Form_" & strFrm)
  End If
  'loop through the controls
  'looking for event procedures
  For Each ctl In frm.Controls
    For Each prp In ctl.Properties
      If prp.name Like "On*" Or _
        prp.name Like "After*" Or _
        prp.name Like "Before*" Then
        'store the length of the prefix
        If prp.name Like "On*" Then
          intPfx = 2
        ElseIf prp.name Like "After*" Then
          intPfx = 5
        ElseIf prp.name Like "Before*" Then
          intPfx = 6
        End If
          
        If prp.Value = "[Event Procedure]" Then
          'initialize the line and colum variables
          'for the proc find in the module
          lngSLine = 0
          lngSCol = 0
          lngELine = 0
          lngECol = 0
          strSub = ctl.name & "_" & Mid(prp.name, intPfx + 1)
          'look for the event procedure in the module
          If mdl.Find(strSub, lngSLine, lngSCol, lngELine, lngECol) Then
            'if event procedure found,
            'print its name and starting line
            Debug.Print strSub & "() Exists"
            Debug.Print , "Starts at line: " & lngSLine
          Else
            'otherwise, print name and MISSING
            Debug.Print strSub & "() Is MISSING"
          End If
        End If
      End If
    Next prp
  Next ctl
  Set prp = Nothing
  Set ctl = Nothing
  Set mdl = Nothing
  Set frm = Nothing
End Function

Charlotte Foust


-----Original Message-----
From: Michael R Mattys [mailto:michael.mattys at adelphia.net] 
Sent: Tuesday, October 19, 2004 12:58 PM
To: Access Developers discussion and problem solving
Subject: Re: [AccessD] Events Collection??


> If you want to itemize the event procedures, you need to work with the

> module, not the form itself.  It's very ugly code.
> 
> Charlotte Foust


Ugly code? Should I defend myself? :)
En Garde, Charlotte Foust!

----

Michael R. Mattys
Mattys MapLib for Microsoft MapPoint 
http://www.mattysconsulting.com
-- 
_______________________________________________
AccessD mailing list
AccessD at databaseadvisors.com
http://databaseadvisors.com/mailman/listinfo/accessd
Website: http://www.databaseadvisors.com



More information about the AccessD mailing list