AW: Weiteres Beispiel
30.05.2025 16:43:54
volti
Hallo,
ich greife jetzt doch noch mal Kuwers Beispiel auf und erweitere es um die Highlihting-Funktion:
Damit man unabhängig von der Anzahl der Buttons ist, wurde eine Klasse erstellt. Hierdurch können jetzt beliebig viele Buttons hinzugefügt werden, ohne dass am Code etwas geändert werden müsste.
Gleichzeitig habe ich auch das Highlighting automatisiert. Man muss nun auch die Farben nicht mehr vorgeben, sondern man kann jedem Button auch eine andere Farbe zuweisen,
Die Enter und Exit-Methode wird hier nicht unterstützt, (mit MausUp/Dn usw. war mir zu müßig), so dass hier für jeden Button wie bisher programmiert einzeln programmiert werden muss.
Der Klassencode:
Public WithEvents coCommandButton As MSForms.CommandButton
Private Declare PtrSafe Function OleTranslateColor Lib "oleaut32.dll" ( _
ByVal clr As OLE_COLOR, ByVal palet As LongPtr, col As Long) As Long
Private Declare PtrSafe Function ColorAdjustLuma Lib "shlwapi.dll" ( _
ByVal clrRGB As Long, ByVal n As Long, ByVal fScale As Long) As Long
Private Sub coCommandButton_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
' Buttonfarbe aufhellen
Dim iFarbe As Long, R As Object
If Not goHLBtn Is coCommandButton Then ' Nur bei Buttonmousoverwechsel einmal machen
Set R = coCommandButton.Parent.lblBlauerRahmen
If Not goHLBtn Is Nothing Then ' Alten Button zurücksetzen
goHLBtn.BackColor = Val(R.Tag)
End If
Set goHLBtn = coCommandButton ' Button global retten
iFarbe = goHLBtn.BackColor
R.Tag = iFarbe ' Aktuelle Buttonfarbe in Tag retten
OleTranslateColor iFarbe, 0, iFarbe
iFarbe = ColorAdjustLuma(iFarbe, 400, True) ' Farbe aufhellen,400 = Intensität
goHLBtn.BackColor = iFarbe ' Farbe des Button zuordnen
End If
End Sub
und die Datei
https://www.herber.de/bbs/user/177627.xlsm
Viele Grüße
KH