|
みなさまこんにちは。
あまり使う機会はないかもしれませんが、
フォーム上に存在するコントロールのイベントをまとめて処理する方法です。
以下にテキストボックスを使用した例を挙げてみます。
'**********************************************************
'* クラスモジュール CEvent *
'**********************************************************
Option Compare Database
Option Explicit
Private WithEvents MyTextBox As ACCESS.TextBox
Public Property Set SetEvent(ByVal Obj As ACCESS.TextBox)
Set MyTextBox = Obj
MyTextBox.OnDblClick = "[Event Procedure]"
MyTextBox.AfterUpdate = "[Event Procedure]"
Set Obj = Nothing
End Property
Private Sub MyTextBox_AfterUpdate()
MsgBox "更新後処理"
End Sub
Private Sub MyTextBox_DblClick(Cancel As Integer)
MsgBox "ダブルクリック"
End Sub
上記コードをクラスモジュールに記載し、「CEvent」という名前で保存します。
'***********************************************************
'* フォーム側処理 *
'***********************************************************
Option Compare Database
Option Explicit
Dim MyEvent() As CEvent
Private Sub Form_Load()
Dim Cntl As Control
Dim i As Long
For Each Cntl In Me.Controls
If Cntl.ControlType = acTextBox Then
ReDim Preserve MyEvent(i)
Set MyEvent(i) = New CEvent
Set MyEvent(i).SetEvent = Cntl
i = i + 1
End If
Next
End Sub
フォームの読み込み時の処理に上記を記載します。
フォーム上の全てのテキストボックスの「ダブルクリック時」「更新後処理」が
取得できていると思われます。
|
|