Wenn sehr viele Elemente zur Wahl stehen, kann es für ein Optionsfeld schnell eng und unübersichtlich werden. Als mögliche Alternative bietet sich hier eine Listbox an. Wir wollen das hier anhand der Auswahl der Rechenart ausprobieren.
Wir entfernen im ersten Frame die Options-Buttons und fügen stattdessen eine Listbox "lstUebung" ein. Wir könnten hier zwar auch gleich die Einträge für die Liste in der Entwicklungsumgebung eingeben (in früheren Versionen war das nicht möglich), meist werden Listboxen jedoch erst zur Laufzeit mit Daten gefüllt. Wir wollen das auch so machen, und zwar dient uns dazu das Form_Load-Ereignis:
Private Sub Form_Load()
Dim i As Integer
For i = 1 To 4
fraUebung(i).Visible = False 'Rahmen unsichtbar machen
Next i
fraUebung(0).Visible = True 'Rahmen sichtbar machen
lstUebung.AddItem "Zählen" 'Liste initialisieren
lstUebung.AddItem "Addition mit Symbolen"
lstUebung.AddItem "Addition"
lstUebung.AddItem "Subtraktion"
lstUebung.AddItem "Multiplikation"
lstUebung.AddItem "Division"
End Sub
Die Listenelemente werden mit der AddItem-Methode hinzugefügt. Da wir die Sortierung der Liste abgeschaltet haben (Sorted=False), erscheinen die Einträge anschließend in der Reihenfolge, in der wir sie eingefügt haben:
Bei längeren Listen, die sonst keine logische Sortierung vorweisen, empfiehlt es sich, die Sortierung einzuschalten, um den Anwender das Finden zu erleichtern.
Jetzt müssen wir nur noch das Click-Ereignis der Liste auswerten. Das sieht ganz ähnlich aus wie vorher die Auswertung unseres Optionsfelds:
Private Sub lstUebung_Click()
Select Case lstUebung.ListIndex
Case 0
aktiveUebung = "Zählen" 'Uebung merken
Exit Sub
Case 1
MaxErgebnisWert = 9
MinErgebnisWert = 2
aktiveUebung = "SymbAddition" 'Uebung merken
Exit Sub
Case 2
aktiveUebung = "Addition" 'Uebung merken
Case 3
aktiveUebung = "Subtraktion" 'Uebung merken
Case 4
aktiveUebung = "Multiplikation" 'Uebung merken
Case 5
aktiveUebung = "Division" 'Uebung merken
End Select
fraUebung(0).Visible = False 'aktiven Rahmen unsichtbar machen
fraUebung(lstUebung.ListIndex - 1).Visible = True
'zum Rahmen mit der ausgewählten Rechenart wechseln
End Sub
Die ListIndex-Eigenschaft der Liste gibt uns die Position des ausgewählten Eintrags wieder. Das erste Element einer Liste hat stets den ListIndex 0.
Wir gehen noch einen Schritt weiter und gestatten unserem Anwender auch einen Doppelklick in die Liste:
Private Sub lstUebung_DblClick()
lstUebung_Click
cmdOK_Click
End Sub
Dies hat die gleiche Wirkung wie wenn man zunächst in die Liste einfach klickt und dann den OK-Button drückt.
© Copyright 1998-2000 J.Behling
Weitergabe und Druck (auch in Teilen, mit Ausnahme von Privatgebrauch) ohne ausdrückliche Genehmigung der Autorin untersagt.