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
Anzeige
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. |
sevISDN 1.0 Überwachung aller eingehender Anrufe! Die DLL erkennt alle über die CAPI-Schnittstelle eingehenden Anrufe und teilt Ihnen sogar mit, aus welchem Ortsbereich der Anruf stammt. Weitere Highlights: Online-Rufident, Erkennung der Anrufbehandlung u.v.m. Tipp des Monats März 2024 Dieter Otter UTF-8 Konvertierung von Dateien und Strings VB6 selbst verfügt über keine Funktionen zur UTF-8 Konvertierung von Daten. Mit Hilfe des ADODB.Stream-Objekts lassen sich diese fehlenden Funktionen aber schnell nachrüsten. Neu! sevCommand 4.0 Professionelle Schaltflächen im modernen Design! Mit nur wenigen Mausklicks statten auch Sie Ihre Anwendungen ab sofort mit grafischen Schaltflächen im modernen Look & Feel aus (WinXP, Office, Vista oder auch Windows 8), inkl. große Symbolbibliothek. |
||||||||||||||||
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. |