Problemstellung:
Nur für 32Bit Office Versionen
Wenn man in Access-Formularen den Mouse Cursor verändern will sind einem
ganz schnell Grenzen gesetzt.
Entweder man setzt ein Stundenglas (Eieruhr) mittels dem DoCmd-Objektes:
DoCmd.Hourglass True
oder man greift auf das Screenobjekt zurück. Aber auch hier ist nicht viel möglich. (mehr s. OH)
Screen.MousePointer = 11
Jetzt möchte ich aber z.B. eine Hand als Cursor erscheinen lassen wenn die Maus über
ein Button fährt oder die Hand soll erscheinen wenn ich über ein Bild fahre um anzuzeigen
das sich ein Link dahinter befindet.
Button herkömmlich:
Button mit Hand-Cursor:
Wie geht das aber? Lösung folgt.
Voraussetzungen:
Das Bsp ist ab A00 lauffähig.
Die Lösung beruht auf API-Funktionen. Das funktioniert auch unter Vista.
Private Const IDC_HAND As Long = 32649 Private Const IDC_ARROW As Long = 32512 Private Const GCL_HCURSOR = -12 Private Declare Function LoadCursor _ Lib "user32" _ Alias "LoadCursorA" ( _ ByVal hInstance As Long, _ ByVal lpCursorName As Long) As Long Private Declare Function SetClassLong _ Lib "user32" _ Alias "SetClassLongA" ( _ ByVal hwnd As Long, _ ByVal nIndex As Long, _ ByVal dwNewLong As Long) As Long Dim blnIsHand As Boolean
Sub SetHandCursor() Dim hHandCursor As Long Dim R As Long On Error Resume Next If blnIsHand Then Exit Sub hHandCursor = LoadCursor(ByVal 0&, IDC_HAND) R = SetClassLong(Me.hwnd, GCL_HCURSOR, hHandCursor) DoEvents blnIsHand = True End Sub
Sub RemoveHandCursor() Dim R As Long Dim hArrowCursor As Long On Error Resume Next If Not blnIsHand Then Exit Sub hArrowCursor = LoadCursor(ByVal 0&, IDC_ARROW) R = SetClassLong(Me.hwnd, GCL_HCURSOR, _ hArrowCursor) DoEvents blnIsHand = False End Sub
Nur für 32Bit Office Versionen
ab A00
Die Zip-Datei enthält ein Version ab A00
Ähnliche Artikel
Weiterlesen...