Alle, die das Internet nutzen, sind schon mal über
einen Button,
einer Grafik oder einem Link mit der Maus gefahren,
als sich irgend etwas änderte
(die Schriftart,-größe,-stil oder eine Anzeige oder eine Grafik oder sonstiges).
Dafür gibt es in der Internetprogrammierung ein MouseOver Ereignis,
dem man Funktionen zuordnen kann.
Nun gibt es in VB nicht direkt identisches, aber etwas, was man sich dafür
umbiegen kann, nämlich das MouseMove Ereignis, das ebenfalls auftritt,
wenn sich die Mause über einem Control befindet und das könnte man sich
doch zu eigen machen.
Und genau das wollen wir im nachfolgenden Tipp auch tun.
Das Problem der Aufgabenstellung ist dabei nicht, irgend etwas auszulösen,
denn mit dem MouseMove Ereignis erhalten wir ja die notwendigen Möglichkeit
zu reagieren, vielmehr muß an das Deaktivieren, der nicht betroffenen Objekte gedacht
werden.
Für ein Demoprojekt benötigen Sie eine Form und eine Anzahl an LabelObjekte, die Sie aus
einem Objekt erzeugen. Bsp.: Label1(0) bis Label1(4)
Sie können aber nach belieben auch mehr nehmen, die nachfolgenden Anweisungen sind
flexibel.
Im Label1_MouseMove(Index As Integer) Event geben sie folgendes ein.
Dim i As Integer 'demarkieren For i = 0 To
Label1.UBound If Not i = Index Then Label1(i).ForeColor =
&H80000012 Label1(i).Font.Underline = False End If Next i
'aktives Objekt markieren If Not Label1(Index).ForeColor
= &HFF0000 Then Label1(Index).ForeColor = &HFF0000
Label1(Index).Font.Underline = True 'xxx End If
Außerdem fügen Sie auch der
Form (und ggf. anderen, noch vorhanden Objekten) in der
MouseMove Methode, das demarkieren aller Labelobjekte ein.
Dim i As Integer
For i = 0 To Label1.UBound
Label1(i).ForeColor = &H80000012 Label1(i).Font.Underline =
False Next i
Um außer der Änderung der Schriftfarbe (ForeColor) und
Unterstrichen (Underline) noch ein anderes Ereignis auszuführen, brauchen Sie nur diese
Anweisungen an der Stelle xxx, ggf. mit Auswertung der Index Eigenschaft
(also welches LabelObjekt aktiv war) einzutragen. |