[AccessD] Programmaticly fill control events

Stuart Sanders stuart at pacific.net.hk
Fri Feb 21 07:10:00 CST 2003


You could try something like this:

Function CreateNewControl()
    Dim frm As Form
    Dim lngLine As Long
    Dim strFormName As String
    Dim ctl As Control
    Dim strCtlName As String

    strFormName = "Form1"
    strCtlName = "cmdTest"
    DoCmd.OpenForm strFormName, acDesign, , , , acHidden

    Set frm = Forms(strFormName)
    Set ctl = CreateControl(strFormName, acCommandButton, acDetail,
vbNullString, _
        vbNullString, 1440, 720, 1440, 720)

    With ctl
        'set control properties
        .Name = strCtlName
    End With

    lngLine = frm.Module.CreateEventProc("Click", ctl.Name)
    With frm.Module
        .InsertLines lngLine + 1, _
            "' Purpose:      insert new event procedure test"
        .InsertLines lngLine + 2, _
            "On Error Resume Next"
        .InsertLines lngLine + 3, vbTab & _
            "msgbox ""Hello World"""

    End With

    DoCmd.Save acForm, strFormName
    DoCmd.Close acForm, strFormName
End Function

In order to test this, you will need a blank form called Form1.  Then
simply run the code.  It should open the form in design mode, add the
command button and on_click code, and then close the form again.  You
can open the form and test the button.

In your real app, it should be fairly simple to modify this (assuming
you know where the control should go) and then iterate through your
forms using any criteria to distinguish the correct forms.

Stuart





More information about the AccessD mailing list