MouseMove/ Steuelement allgemein ansprechen

Informationen und Beispiele zu den hier genannten Dialog-Elementen:
UserForm Label
Bild

Betrifft: MouseMove/ Steuelement allgemein ansprechen
von: Martin
Geschrieben am: 07.10.2003 16:49:31

Hallo,

habe in der Recherche den Weg gefunden, wie man mit 'MouseMove' den (sicherlich überflüssigen) aber netten Effekt erzielen kann, Buttons, Labels etc entsprechend anders farblich zu markieren. Das funktioniert auch soweit.

Eine Arbeitsmappe von mir enthält viele Tabellen. Zur Navigation habe ich ein Menü erstellt, dh Labels in einer Userform, die einen direkt ins entsprechende Blatt bringen. Dieses Menü hat zwei Spalten mit einmal 8 und einmal 10 Labels (die auch noch eine unterschiedliche BackColor haben).

Würde ich den MouseMove-Code für alle meine Labels eingeben, hätte ich sehr viel Code, der aufgrund der unterschiedlichen Farben in den Labels recht aufwendig wird. Hier ein Auszug, wie ich angefangen habe ..


Private Sub lCSGer_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
lCSGer.BackColor = &H80000002
lCSGer.ForeColor = &HFFFFFF
lCSFr.BackColor = &H8000000A
lCSFr.ForeColor = &H0&
End Sub




Private Sub lCSfr_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
lCSFr.BackColor = &H80000002
lCSFr.ForeColor = &HFFFFFF
lCSGer.BackColor = &H8000000A
lCSGer.ForeColor = &H0&
End Sub


usw.
Dies sind jetzt nur zwei gleichfarbige Labels, bei 18 sieht es schon anders aus.

Frage: Es gibt doch sicherlich eine Möglichkeit (Schleife?), die zu vereinfachen oder muss ich da durch und den Code so wie er angefangen wurde für alle Elemente durchziehen?

Gruss,
Martin
Bild


Betrifft: AW: MouseMove/ Steuelement allgemein ansprechen
von: Nepumuk
Geschrieben am: 07.10.2003 17:11:30

Hallo Martin,
soll immer nur ein Label gefärbt, und die Anderen ungefärbt sein?
Gruß
Nepumuk


Bild


Betrifft: ja (oT)
von: Martin
Geschrieben am: 07.10.2003 17:17:34

M.


Bild


Betrifft: AW: ja (oT)
von: Nepumuk
Geschrieben am: 07.10.2003 17:32:12

Hallo Martin,
hier ein Beispiel, bei dem es egal ist, wie viele Labels du hast.

https://www.herber.de/bbs/user/1312.xls


Gruß
Nepumuk


Bild


Betrifft: Super, Danke! (oT)
von: Martin
Geschrieben am: 07.10.2003 17:36:53

M.


Bild


Betrifft: AW: Super, Danke! (oT)
von: Michael Scheffler
Geschrieben am: 07.10.2003 17:41:44

Hallo Nepomuk,

For Each Myctrl In UserForm1.Controls
If TypeName(Myctrl) = "Label" Then
With Myctrl
.BackColor = &H8000000A
.ForeColor = &H0&
End With
End If
Next

in einer Klassendatei widerspricht ihrem Zweck, nämlich universell einsetzbar zu sein, eine DLL kannst Du damit nicht erzeugen.

Wenn schon diese Schleife, dann im MouseMove des Formulars. Aber ich würde hier keine Schleife machen, weil das zu Lasten der Performance geht.

Gruß

Micha


Bild


Betrifft: AW: Super, Danke! (oT)
von: Nepumuk
Geschrieben am: 07.10.2003 17:50:25

Hallo Micha,
ehrlich gesagt, ich weiß garnicht, wie ich aus einem Klassenmodul eine DLL erzeugen kann. Ich benutze dafür C++.
Gruß
Nepumuk


Bild


Betrifft: AW: Super, Danke! (oT)
von: Michael Scheffler
Geschrieben am: 08.10.2003 08:57:03

Hi,

es geht ganz gut (unter Zuhilfenahme von VB), wo man die clsDatei importieren kann.

Gruß

Micha


Bild


Betrifft: AW: MouseMove/ Steuelement allgemein ansprechen
von: Michael Scheffler
Geschrieben am: 07.10.2003 17:13:03

Hi,

in der Form:

Option Explicit
Option Base 1

Dim varLabel(2) As New clsLabel


Private Sub lCSGer_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
End Sub



Private Sub UserForm_Initialize()
    Set varLabel(1).lblGroup = lCSGer
    Set varLabel(2).lblGroup = lCSFr
End Sub




Private Sub UserForm_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
' Leider hier nicht ganz so elegant!
    lCSGer.BackColor = &H8000000A: lCSGer.ForeColor = &H0&
    lCSFr.BackColor = &H8000000A: lCSFr.ForeColor = &H0&
End Sub



Und in einem Klassenmodul clsLabel:
Option Explicit

Public WithEvents lblGroup As MSForms.Label


Private Sub lblGroup_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
    lblGroup.BackColor = &H80000002
    lblGroup.ForeColor = &HFFFFFF
End Sub


Gruß

Micha


Bild


Betrifft: AW: MouseMove/ Steuelement allgemein ansprechen
von: Martin
Geschrieben am: 07.10.2003 17:21:02

Danke Michael, das sieht schon besser aus, auch wenn es immer noch recht komplex aufgebaut ist. Wahrscheinlich ist es aber nicht einfacher hinzubekommen.

Gruss,
Martin


 Bild

Beiträge aus den Excel-Beispielen zum Thema " MouseMove/ Steuelement allgemein ansprechen"