Hallo,
nach einigen Testläufen habe ich eine Ersatzlösung gefunden :-)
Man braucht für ein Testlauf eine leere Access-DB.
Man erstellt ein Formular mit einer Schaltfläche (Name: Befehl0) und einem Bezeichnungsfeld (Name: lblInfo)
Im Codebereich des Formulars muss folgender VBA-Code eingefügt werden:
Option Compare Database
Option Explicit
Private WithEvents myEvents As clsMouseLeave
Private Sub Befehl0_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
myEvents.ActualControl Me.Befehl0
End Sub
Private Sub Detailbereich_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
myEvents.ActualControl Me.Detailbereich
End Sub
Private Sub Form_Load()
Set myEvents = New clsMouseLeave
myEvents.ActualControl Me
End Sub
Private Sub myEvents_MouseLeave(ControlName As String)
Me.lblInfo.Caption = ControlName & " / " & Now
End Sub
Als letztes erstellt man ein Klassenmodul mit dem Namen clsMouseLeave:
Option Compare Database
Option Explicit
Dim myControl As Object
Event MouseLeave(ControlName As String)
Sub ActualControl(ctrl As Object)
If myControl Is Nothing Then
Set myControl = ctrl
Else
If ctrl Is Nothing And Not myControl Is Nothing Then
RaiseEvent MouseLeave(myControl.Name)
Set myControl = ctrl
Else
If Not myControl.Name = ctrl.Name Then
RaiseEvent MouseLeave(myControl.Name)
Set myControl = ctrl
End If
End If
End If
End Sub
Kurze Erläuterung:
Beim Öffnen wird die Klasse clsMouseLeave über Form_Load initialisiert.
Über das Events MouseMove wird der Klasse clsMouseLeave immer die derzeitige Control übermittelt. Daher müssen in allen Formular-Steuerelementen, für die das Event MouseLeave benötigt wird folgender Befehl eingesetzt werden:
myEvents.ActualControl Me.{Control]
Statt [Control] muss das entsprechende Control-Objekt übergeben werden.
Wann immer ein MouseLeave-Ereignis auftritt, wird im Formular folgende Sub ausgeführt:
Private Sub myEvents_MouseLeave(ControlName As String)
End Sub
In der Variable ControlName ist der Name des betreffenden Controls enthalten, der ausgewertet werden kann.
Eine Beispiel-Access-DB kann hier heruntergeladen werden.
LG, BigBen
|