I used these classes
Class name: CSingleButton
Code:
Public buttonsHandler As CButtons
Public WithEvents btn As Access.Image
Private Sub btn_Click()
buttonsHandler.HandleClick btn
End Sub
Class name: CButtons
Code:
Private ButtonHandlers As Collection
Dim Tbx As Access.TextBox
Const MODE_DEBUG As Boolean = True
Public Sub LoadButtons(ByRef TheForm As Access.Form, Target As Access.TextBox)
Dim ctl As Control
Dim btnHandler As CSingleButton
Set ButtonHandlers = New Collection
For Each ctl In TheForm.Controls
If ctl.ControlType = acImage Then
Set btnHandler = New CSingleButton
Set btnHandler.btn = ctl
Set btnHandler.buttonsHandler = Me
ctl.OnClick = "[Event Procedure]"
ButtonHandlers.Add btnHandler
End If
Next ctl
Set Tbx = Target
End Sub
Public Sub HandleClick(btn As Access.Image)
'If MODE_DEBUG Then Debug.Print btn.Name & "_Click" & btn.Tag
'Debug.Print btn.Tag & "*"
Tbx = btn.Tag
DoCmd.Close acForm, btn.Parent.Name
End Sub
One disturbing thing I came across: