目安箱 IV

目安箱投稿のルールはこちらをごらんください。
ご意見は電子メールで承っています。
「目安箱」は質問禁止です。技術的な質問はそれぞれの質問箱へどうぞ。

迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。

  新規投稿 ┃ツリー表示 ┃一覧表示 ┃トピック表示 ┃検索 ┃設定 ┃ホーム  
152 / 277 ←次へ | 前へ→

【137】複数のコントロールのイベントを取得する
Access  小僧  - 06/2/7(火) 15:53 -

引用なし
パスワード
   みなさまこんにちは。

あまり使う機会はないかもしれませんが、
フォーム上に存在するコントロールのイベントをまとめて処理する方法です。
以下にテキストボックスを使用した例を挙げてみます。

'**********************************************************
'*        クラスモジュール 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

フォームの読み込み時の処理に上記を記載します。

フォーム上の全てのテキストボックスの「ダブルクリック時」「更新後処理」が
取得できていると思われます。
3,118 hits

【137】複数のコントロールのイベントを取得する 小僧 06/2/7(火) 15:53 Access[未読]

  新規投稿 ┃ツリー表示 ┃一覧表示 ┃トピック表示 ┃検索 ┃設定 ┃ホーム  
152 / 277 ←次へ | 前へ→
ページ:  ┃  記事番号:   
0
(SS)C-BOARD v3.8 is Free