vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Zippen wie die Profis!  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2024
 
zurück
Rubrik: Controls · Sonstiges   |   VB-Versionen: VB5, VB611.05.02
Index eines Optionsfeld-Arrays ermitteln

Eine universelle Funktion, die den Index der ausgewählten Option eines OptionButton-Steuerelementfeldes ermittelt und zurückgibt.

Autor:   Michael BayerBewertung:     [ Jetzt bewerten ]Views:  15.848 
ohne HomepageSystem:  Win9x, WinNT, Win2k, WinXP, Win7, Win8, Win10, Win11 Beispielprojekt auf CD 

Wer häufig mit mit Optionsfeld-Arrays arbeitet, benötigt ständig den Index des aktivierten Optionsfeldes in einem Array, damit das Programm entsprechend darauf reagieren kann. Dies geschieht in der Regel mit einer "For Next"-Schleife ähnlich dieser:

Dim inti As Integer
For inti = 0 to OptionsFeldArray.UBound
  If OptionsFeldArray(inti).Value then     ' Index gefunden
Next inti

Hier ist ein Tipp, wie man die Suche nach dem ausgewählten Eintrag eines OptionButton-Steuerelementfeldes mittels einer Funktion vereinfachen kann. Für das Beispiel wird ein Formular mit beliebig vielen Optionsfeldern (als Steuerelementfeld) und einem Command-Button benötigt.

Private Sub Command1_Click()
 
  ' Anzeige des Indexes des aktiven Optionsfeldes durch 
  ' Aufruf der Funktion fnCtlIndex.
  ' Parameter: das Optionsfeld-Array
 
  MsgBox Option1(fnCtlIndex(Option1)).Index
 
End Sub
Private Function fnCtlIndex(ctlArray As Object) As Integer
 
  ' Diese Function durchsucht das Control-Array und ermittelt 
  ' anhand des Value-Wertes den Index des aktiven Optionsfeldes.
  ' Ist kein Optionsfeld aktiv, wird "-1" zurückgegeben.
  ' Das schöne ist, dass man den Startindex (0 oder 1) des Arrays 
  ' sowie die Größe selbst nicht wissen muß.
 
  Dim ctlControl  As Control
  Dim intIndex    As Integer
 
  ' Vorbelegen, falls kein Control aktiviert wurde
  intIndex = -1
 
  ' Aktiviertes Control suchen
  For Each ctlControl In ctlArray
    If ctlControl.Value = True Then 
      intIndex = ctlControl.Index
      Exit For
    End If
  Next ctlControl
 
  fnCtlIndex = intIndex
 
End Function

Trifft der Anwender keine Auswahl, gibt die Funktion "-1" zurück. Mit ein klein wenig Mehraufwand kann man die Funktion veranlassen, in diesem Fall selbständig eine bestimmte Option zu aktivieren, indem man deren Index als Parameter mitgibt.

Im nachfolgenden Codebeispiel soll das Optionsfeld mit dem Index 3 aktiviert werden, wenn der Programmbenutzer keine eigene Auswahl getroffen hat.

MsgBox Option1(fnCtlIndex(Option1, 3)).Index

Und hier ist die leicht geänderte Funktion dazu:

Public Function fnCtlIndex(ctlArray As Object, _
  bytStart As Byte) As Integer
 
  Dim ctlControl  As Control
  Dim intIndex    As Integer
 
  ' Vorbelegen, falls kein Control aktiviert wurde
  intIndex = -1
 
  ' Aktiviertes Control suchen
  For Each ctlControl In ctlArray
    If ctlControl.Value = True Then 
      intIndex = ctlControl.Index
      Exit For
    End If
  Next ctlControl
 
  If intIndex = -1 Then
    ctlArray(bytStart).Value = True
    intIndex = bytStart
  End If
 
  fnCtlIndex = intIndex
 
End Function

Dieser Tipp wurde bereits 15.848 mal aufgerufen.

Voriger Tipp   |   Zufälliger Tipp   |   Nächster Tipp

Über diesen Tipp im Forum diskutieren
Haben Sie Fragen oder Anregungen zu diesem Tipp, können Sie gerne mit anderen darüber in unserem Forum diskutieren.

Neue Diskussion eröffnen

nach obenzurück


Anzeige

Kauftipp Unser Dauerbrenner!Diesen und auch alle anderen Tipps & Tricks finden Sie auch auf unserer aktuellen vb@rchiv  Vol.6
(einschl. Beispielprojekt!)

Ein absolutes Muss - Geballtes Wissen aus mehr als 8 Jahren vb@rchiv!
- nahezu alle Tipps & Tricks und Workshops mit Beispielprojekten
- Symbol-Galerie mit mehr als 3.200 Icons im modernen Look
Weitere Infos - 4 Entwickler-Vollversionen (u.a. sevFTP für .NET), Online-Update-Funktion u.v.m.
 
   

Druckansicht Druckansicht Copyright ©2000-2024 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel