Office Forum
www.Office-Loesung.de
Access :: Excel :: Outlook :: PowerPoint :: Word :: Office :: Wieder Online ---> provisorisches Office Forum <-
Ereignis MouseOut
zurück: Datenbank mit Bild weiter: word dokument in ein formular Unbeantwortete Beiträge anzeigen
Neues Thema eröffnen   Neue Antwort erstellen     Status: Offen Facebook-Likes Diese Seite Freunden empfehlen
Zu Browser-Favoriten hinzufügen
Autor Nachricht
Gschaftlhuaba
Access und Excel VBA Programmierer


Verfasst am:
19. Okt 2008, 18:29
Rufname:


Ereignis MouseOut - Ereignis MouseOut

Nach oben
       Version: Office 2003

Hallo,

ich möchte, dass beim Überfahren von Textfeldern mit der Maus dessen Hintergrundfarbe geändert wird. Sobald sich die Maus wieder außerhalb des Steuerelementes befindet, soll die Hintergrundfarbe wieder zurück gesetzt werden.

Ich habe dabei zwei Varianten probiert:
1. MouseMove-Ereignis über Textfeld und im Detailbereich der Form
=> bei langsamen Mausbewegungen klappt das super, nur bei schnellen wird das
Verlassen des Textfeldes nicht erkannt und es bleibt hell

2. MouseMove-Ereignis über dem Textfeld abfangen und über SetCapture
auch die Mausereignisse empfangen, wenn die Maus schon gar nicht mehr über dem
Textfeld schwebt.
=> bei schnellen und langsamen Mausbewegungen sauber. Nur unter einer Bedingung nicht.

Erstellt euch dazu einfach mal eine Form mit einem Textfeld, welches ihr Text2 nennt. Kopiert dann folgenden Code ins Formularmodul:
Code:
Option Compare Database
Option Explicit

Private Type POINTAPI
    X As Long
    Y As Long
End Type

'Ermittlung Handle unter Cursor
Private Declare Function WindowFromPoint Lib "user32" _
    (ByVal xPoint As Long, ByVal yPoint As Long) As Long
Private Declare Function SetCapture Lib "user32.dll" _
    (ByVal hwnd As Long) As Long
Private Declare Function ReleaseCapture Lib "user32.dll" () As Long
Private Declare Function GetCursorPos Lib "user32" _
    (lpPoint As POINTAPI) As Long
 
Private Sub Text2_MouseMove(Button As Integer, Shift As Integer, _
                            X As Single, Y As Single)
    Static released As Boolean  'Wenn ReleaseCapture aufgerufen wurde
    Dim handleAktuell As Long
    Dim Koordinaten As POINTAPI
   
    handleAktuell = HandleErmitteln()
    If released = True Then
        released = False
      ElseIf GetCapture() = 0 Then
        'MouseIn erstes Steuerelement
        SetCapture handleAktuell
        Call Text2_MouseIn
      ElseIf handleAktuell <> GetCapture() Then
        'Wenn ich die Mausereignisse empfange und das neue Handle ein anderes ist
        Call Text2_MouseOut
        released = True
        ReleaseCapture
      ElseIf handleAktuell = GetCapture() Then
        'MouseMove
    End If
End Sub

Private Sub Text2_MouseIn()
    Me!Text2.BackColor = 16777215
End Sub

Private Sub Text2_MouseOut()
    Me!Text2.BackColor = 15329769
End Sub

Private Function HandleErmitteln() As Long
    Dim Koordinaten As POINTAPI
   
    GetCursorPos Koordinaten
    HandleErmitteln = WindowFromPoint(Koordinaten.X, Koordinaten.Y)
End Function
Öffnet jetzt mal die Form und fahrt mit der Maus ganz vorsichtig in Richtung des Textfeldes. Wenn der Mauscursor su gerade eben mal den Rand berührt, dann wird auch das MouseMove-Ereignis ausgelöst und demnach das Textfeld weiß. Geht man jedoch mit der Maus nicht weiter in das Textfeld rein, sondrn wieder raus, wird kein MouseOut verzeichnet.

Wieso?

Danke

_________________
MfG
Gschaftlhuaba
Neues Thema eröffnen   Neue Antwort erstellen Alle Zeiten sind
GMT + 1 Stunde

Diese Seite Freunden empfehlen

Seite 1 von 1
Gehe zu:  
Du kannst Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.
Du kannst Dateien in diesem Forum nicht posten
Du kannst Dateien in diesem Forum herunterladen

Verwandte Themen
Forum / Themen   Antworten   Autor   Aufrufe   Letzter Beitrag 
Keine neuen Beiträge Access Formulare: Unterformular Ereignis dirty 1 Jottwd 402 23. Jul 2011, 19:06
MissPh! Unterformular Ereignis dirty
Keine neuen Beiträge Access Formulare: Ereignis 25 bmwGTR 514 15. Jul 2011, 09:20
MissPh! Ereignis
Keine neuen Beiträge Access Formulare: Ereignis beim Listenfeld endet sofort in einer Fehlermeldung 4 RichterPeter 902 16. Nov 2010, 22:01
RichterPeter Ereignis beim Listenfeld endet sofort in einer Fehlermeldung
Keine neuen Beiträge Access Formulare: Ereignis bei Ausschalten / Entfernen eines Filters? 3 lord wilmore 713 12. Feb 2010, 21:28
jens05 Ereignis bei Ausschalten / Entfernen eines Filters?
Keine neuen Beiträge Access Formulare: Ereignis bei Fokussieren 1 Gerdbach 199 03. Nov 2009, 21:21
Gasth Ereignis bei Fokussieren
Keine neuen Beiträge Access Formulare: Welches Ereignis löst ein Unterformular aus? 9 Hautstaender71 596 11. März 2009, 03:57
Willi Wipp Welches Ereignis löst ein Unterformular aus?
Keine neuen Beiträge Access Formulare: Ereignis "Nicht in Liste" 4 Neuling Klaus 291 20. Nov 2008, 20:30
Neuling Klaus Ereignis "Nicht in Liste"
Keine neuen Beiträge Access Formulare: Unterformular, Ereignis bei Selektion 3 404Error 801 03. Sep 2008, 15:34
sthm Unterformular, Ereignis bei Selektion
Keine neuen Beiträge Access Formulare: Ereignis nach ändern des Inhaltes einer Textbox 9 Gast 3658 03. März 2008, 13:01
Gast Ereignis nach ändern des Inhaltes einer Textbox
Keine neuen Beiträge Access Formulare: Ereignis ausführen, nachdem das Formular sichtbar ist 2 Jacko 1095 14. Feb 2008, 10:11
Jacko Ereignis ausführen, nachdem das Formular sichtbar ist
Keine neuen Beiträge Access Formulare: Ereignis zum Schreiben eines Feldinhalts in Tabelle gesucht 15 pacman 1312 22. Nov 2007, 16:07
Gast Ereignis zum Schreiben eines Feldinhalts in Tabelle gesucht
Keine neuen Beiträge Access Formulare: Ereignis aufrufen nach Änderung von berechnetem Textfeld 8 NicooL 1116 19. Okt 2007, 04:32
Willi Wipp Ereignis aufrufen nach Änderung von berechnetem Textfeld
 

----> Diese Seite Freunden empfehlen <------ Impressum - Besuchen Sie auch: Microsoft Excel-Formeln