'Class Name: MultiselectIterator
'Author: MajP
'Purpose: Turns any form with a command button into a multiSelect Iterator
'
'Use: Paste this code in a class module called MultiSelectIterator
Option Compare Database
Option Explicit
Private mMouseDown As Boolean
Private mFirstRecord As Long
Private mLastRecord As Long
Private WithEvents mFrm As Access.Form
Private WithEvents mCtrl As Access.CommandButton
Private mRS As DAO.Recordset
Public Event Click()
Public Sub initialize(TheForm As Access.Form, TheClickControl As Access.CommandButton)
Set mFrm = TheForm
Set mRS = mFrm.RecordsetClone
Set mCtrl = TheClickControl
mCtrl.OnClick = "[Event Procedure]"
mFrm.OnMouseDown = "[Event Procedure]"
mFrm.OnMouseUp = "[Event Procedure]"
mFrm.OnMouseMove = "[Event Procedure]"
End Sub
Public Property Get FirstRecord() As Long
FirstRecord = mFirstRecord
End Property
Public Property Let FirstRecord(ByVal Value As Long)
mFirstRecord = Value
End Property
Public Property Get LastRecord() As Long
LastRecord = mLastRecord
End Property
Public Property Let LastRecord(ByVal Value As Long)
mLastRecord = Value
End Property
Public Property Get Recordset() As DAO.Recordset
Set Recordset = mRS
End Property
Private Property Set FormRecordset(ByVal Value As Recordset)
mRS = Value
End Property
Private Sub mCtrl_Click()
mFrm.SelTop = Me.FirstRecord + 1
mFrm.SelHeight = Me.LastRecord + 1
RaiseEvent Click
End Sub
Private Sub mFrm_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
mMouseDown = True
End Sub
Private Sub mFrm_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
If Not mMouseDown Then
FirstRecord = mFrm.SelTop - 1
LastRecord = mFrm.SelHeight - 1
End If
End Sub
Private Sub mFrm_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single)
mMouseDown = False
End Sub