Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
320to324
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
320to324
320to324
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

MouseMove/ Steuelement allgemein ansprechen

MouseMove/ Steuelement allgemein ansprechen
07.10.2003 16:49:31
Martin
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

9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: MouseMove/ Steuelement allgemein ansprechen
07.10.2003 17:11:30
Nepumuk
Hallo Martin,
soll immer nur ein Label gefärbt, und die Anderen ungefärbt sein?
Gruß
Nepumuk
ja (oT)
07.10.2003 17:17:34
Martin
M.
Super, Danke! (oT)
07.10.2003 17:36:53
Martin
M.
AW: Super, Danke! (oT)
07.10.2003 17:41:44
Michael Scheffler
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
Anzeige
AW: Super, Danke! (oT)
07.10.2003 17:50:25
Nepumuk
Hallo Micha,
ehrlich gesagt, ich weiß garnicht, wie ich aus einem Klassenmodul eine DLL erzeugen kann. Ich benutze dafür C++.
Gruß
Nepumuk
AW: Super, Danke! (oT)
08.10.2003 08:57:03
Michael Scheffler
Hi,

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

Gruß

Micha
AW: MouseMove/ Steuelement allgemein ansprechen
07.10.2003 17:13:03
Michael Scheffler
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
Anzeige
AW: MouseMove/ Steuelement allgemein ansprechen
07.10.2003 17:21:02
Martin
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

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige